当在 ajax 查询中将异步 属性 设置为 false 时,不会调用 Web Api 控制器

Web Api conroller is not called when async property is set to false in ajax query

我有一个 Web api 控制器,由我页面的 ajax 查询调用。当 async 值设置为 true 时,一切正常。当设置为 false 时,ajax 查询不会触发。请参阅下面我的代码

C# 网络 api 控制器

using System;
using Microsoft.Xrm.Sdk;
using CRM_WebApp.Models;
using System.Web.Http;
using System.Web.Http.Cors;
using Microsoft.Xrm.Sdk.Query;
using CRM_WebApp.Services;
using System.Text.RegularExpressions;

namespace CRM_WebApp.Controllers
{
[EnableCors(origins: "*", headers: "*", methods: "*")]
public class CallBackFormController : ApiController
{
    [System.Web.Http.HttpPost]
    public System.Web.Http.IHttpActionResult Post([System.Web.Http.FromBody] CallBackFormModel CallBackFormModel)
    {
        ConnectiontoCrm connectiontoCrm = new ConnectiontoCrm();
        connectiontoCrm.GetConnectiontoCrmCopy();

        //Create Lead
        Entity lead = new Entity("lead");
        lead["firstname"] = CallBackFormModel.FirstName;

        return Json(new { result = "ok" });

    }
  }
}

下面是我的ajax查询

<script>

$("input[name='crm']").click(function(){

   var Data = {FirstName : $("input[name='user_name']").val()};

   makeAjaxCall(Data);  

  });

function makeAjaxCall(Data){
    $.ajax({

                url: "http://localhost:54360///api/CallBackForm",
                type: "POST",
                dataType: "json",
                async: false,
                contentType: 'application/json',
                data: JSON.stringify(Data),

                success: function(data){

                    alert("DONESUCCESS"); 
                },
                error: function(data){
                    alert("DONEERROR");
                }
            });

     }

</script>

我不确定如何更改我的代码才能得到错误

它似乎工作正常,我从 github

使用了 Fake Online REST API

(function CallTheServer() { 
    $.ajax({
        url: "https://jsonplaceholder.typicode.com/posts",
        type: "POST",
        dataType: "json",
        async: false, /* change it to true or false see the effect of alert('Check me out too'), following the ajax*/
        contentType: 'application/json',
        data: JSON.stringify({
              title: 'foo',
              body: 'bar',
              userId: 1
            }),
        success: function(data){
            alert("DONESUCCESS " + JSON.stringify(data)); 
        },
        error: function(data){
            alert("DONEERROR");
        }
    });
    alert('Check me out too');
})()
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js"></script>

Async:false 不是一个好习惯。设置 async:false 意味着您正在使进程同步,因此浏览器将挂起它直到它完成——它不能继续使用您的其他方法。删除该选项将使调用异步(默认情况下,应该如此)。

如果您仍想使用 async:false,请阅读 link-

http://api.jquery.com/jQuery.ajax/