使用jQueryAjax调用WebAPI返回错误

使用jQueryAjax调用WebAPI返回错误,jquery,web-applications,model-view-controller,Jquery,Web Applications,Model View Controller,以下是我的jQuery代码: $.ajax({ url: 'http://hostedsevice.com/webapi/Masters/GetStates/', data: { mName: request.term}, //contentType: 'application/json; charset=utf-8', dataType: 'json',

以下是我的jQuery代码:

$.ajax({
                url: 'http://hostedsevice.com/webapi/Masters/GetStates/',
                data: { mName: request.term},
                //contentType: 'application/json; charset=utf-8',
                dataType: 'json',
                type: 'GET',
                success: function (result) {
                    alert('');
                    if ($.isEmptyObject(result)) {
                        $('#JobStateTxt').css('border-color', '#B94A48');
                        $('#stateVal').show();
                        stateStatus = false;
                    } else {
                        $('#JobStateTxt').css('border-color', '');
                        $('#stateVal').css('display', 'none');
                        stateStatus = true;
                    }
                    response(result);
                },
                OK: function(result) {
                    alert(result);
                },
                error: function(result) {
                    alert(result);
                }
            });
和web api(在不同的项目中):

public异步任务GetStates(字符串mName)
{
HttpResponseMessage响应;
尝试
{               
SB.BusinessLayer.Common.Common objComn=新BusinessLayer.Common.Common();
var result=objComn.GetStates(mName);
var state=result.Select(p=>new
{
label=p.StateName,
值=p.StateId,
id=p.StateId
});
response=Request.CreateResponse(HttpStatusCode.OK,状态为“json”);
}
抓住
{
response=Request.CreateResponse(HttpStatusCode.BadRequest);
}
返回响应;
}
使用Fiddler进行检查会显示API返回的记录(数据),但在jQuery中,永远不会执行success函数,而不是运行error函数并显示statusText:“error”。
我不能理解这里的问题,帮帮忙

我知道这是延迟响应,但我遇到了类似的问题:


我发现ajax调用中的
数据类型:'json',
行需要删除。

我对此有点纠结,所以我想添加我的发现。我不确定您使用的jQuery的版本。在我的例子中,我正在从v1.12.4升级到v3.4.1

我使用Ajax调用与web API通信。迁移jquery版本后,我的一些ajax调用将成功地命中端点,但在响应时总是调用错误回调函数

   SyntaxError: Unexpected end of JSON input
    at parse (<anonymous>)
    at Ut (jquery-3.x.x.min.js:x)
    at k (jquery-3.x.x.min.js:x)
    at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)
响应必须与声明的类型匹配。在上面的实例中,它必须是JSON类型。如果您正在调用
void
端点。不返回任何内容,并执行错误回调函数


为了解决这个问题,我做了上面提到的。删除数据类型,因为不希望返回任何内容。这也解决了我的问题。我仍在试图弄清楚为什么这在
v1.12.4
中起作用,以及它何时停止起作用。如果有人能添加到这一点,我们将不胜感激。

您是否尝试过使用Firebug网络调试栏跟踪API调用?也许JS控制台会返回一个错误;或者API本身,我使用了fiddler和Web API retun结果。我可以在fiddler上看到结果,但在jqueryCan中看不到。你能给我们fiddler链接吗?为了澄清,当我删除dataType属性,但保留contentType属性时,它对我有效。(出于某种原因,调用old Web Service.ASMX它喜欢这两个属性。)已经5年多了,我甚至不记得这个问题了。从表面上看,这可能是CORS的问题。我可能正在访问不在同一域上的服务,并且此应用程序未在服务中列入白名单。
   SyntaxError: Unexpected end of JSON input
    at parse (<anonymous>)
    at Ut (jquery-3.x.x.min.js:x)
    at k (jquery-3.x.x.min.js:x)
    at XMLHttpRequest.<anonymous> (jquery-3.3.1.min.js:2)
 dataType: 'JSON'