在ajax查询中将async属性设置为false时,不会调用Web Api conroller

时间:2018-04-04 06:00:41

标签: javascript ajax crm asp.net-core-webapi

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

C#web api controller

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>

我不知道如何更改代码以获取错误

2 个答案:

答案 0 :(得分:1)

似乎工作正常,我使用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>

答案 1 :(得分:1)

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

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

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