Javascript 未捕获的SyntaxError:使用Ajax post的意外标记u

Javascript 未捕获的SyntaxError:使用Ajax post的意外标记u,javascript,jquery,ajax,Javascript,Jquery,Ajax,对于如何解决/诊断ajax/jquery错误,我感到困惑 这是我的职责: var LogIn = { Email: $("#Name").val(), MobileNo: $("#txtMobileNumber").val(), PinCode: '', Message: '', Success:false }; $.ajax({ type: "POST", cr

对于如何解决/诊断ajax/jquery错误,我感到困惑

这是我的职责:

   var LogIn = {
        Email: $("#Name").val(),
        MobileNo: $("#txtMobileNumber").val(),
        PinCode: '',
        Message: '',
        Success:false
    };
    $.ajax({
        type: "POST",
        crossDomain: true,
        dataType: 'jsonp',
         contentType: "application/json",
        url: "https://a different server domain/api/LoginRequest",
        data: JSON.stringify(LogIn),
        success: function (data) {
            $("#divError").html(data);
        },
        error: function (error) {
            jsonValue = jQuery.parseJSON(error.responseText);
            $("#divError").html(jsonValue);
        }
    });
我得到这个错误:


jQuery不支持使用POST和jsonp,原因很简单:当您将
标记注入DOM时(这是jQuery在使用jsonp时所做的),浏览器将向远程端点发送GET请求,该请求已在该标记的
src
属性中引用

因此,基本上您需要使用GET:

type: "GET"
此外,由于数据是作为查询字符串参数发送的,因此应删除内容类型:

contentType: "application/json",
不要
JSON.stringify
数据

下面是完整的示例:

$.ajax({
    type: "GET",
    crossDomain: true,
    dataType: 'jsonp',
    url: "https://a different server domain/api/LoginRequest",
    data: LogIn,
    success: function (data) {
        $("#divError").html(data);
    },
    error: function (error) {
        jsonValue = jQuery.parseJSON(error.responseText);
        $("#divError").html(jsonValue);
    }
});
当然,这只有在远程端点支持JSONP和GET谓词时才起作用


我个人建议使用CORS而不是JSONP,因为它会给你更多的选择。在这种情况下,您可以使用POST。请参考以下资料,因为您似乎正在服务器上使用ASP.NET Web API并尝试进行跨域AJAX调用:

jQuery不支持使用POST和jsonp,原因很简单:当您将
标记注入DOM时(这是jQuery在使用jsonp时所做的),浏览器将向远程端点发送GET请求,该请求已在该标记的
src
属性中引用

因此,基本上您需要使用GET:

type: "GET"
此外,由于数据是作为查询字符串参数发送的,因此应删除内容类型:

contentType: "application/json",
不要
JSON.stringify
数据

下面是完整的示例:

$.ajax({
    type: "GET",
    crossDomain: true,
    dataType: 'jsonp',
    url: "https://a different server domain/api/LoginRequest",
    data: LogIn,
    success: function (data) {
        $("#divError").html(data);
    },
    error: function (error) {
        jsonValue = jQuery.parseJSON(error.responseText);
        $("#divError").html(jsonValue);
    }
});
当然,这只有在远程端点支持JSONP和GET谓词时才起作用


我个人建议使用CORS而不是JSONP,因为它会给你更多的选择。在这种情况下,您可以使用POST。请参考以下资料,因为您似乎正在服务器上使用ASP.NET Web API并尝试进行跨域AJAX调用:

可能是
未定义的
可能是
未定义的
,感谢您的快速回复。我在RESTAPI端使用FromBody。这会有所不同吗?现在将尝试您的建议-谢谢NB:[HttpGet][Route(“LoginRequest”)]public string LoginRequest([FromBody]Login Login Login)您应该删除
[FromBody]
,因为当您发出GET请求时,正文是空的。IIRC您应该改用
[FromUri]
。还要确保从API返回JSONP内容而不是JSON,否则请求将失败。~我不知道我的asp.net应用程序是否支持jsop。这是我从以前的问答中使用的。假设它不支持,我是否应该恢复到json?是的,如果您不知道您的API是否支持JSONP,那么最好改用CORS。我建议你读这篇文章:谢谢你的快速回复。我在RESTAPI端使用FromBody。这会有所不同吗?现在将尝试您的建议-谢谢NB:[HttpGet][Route(“LoginRequest”)]public string LoginRequest([FromBody]Login Login Login)您应该删除
[FromBody]
,因为当您发出GET请求时,正文是空的。IIRC您应该改用
[FromUri]
。还要确保从API返回JSONP内容而不是JSON,否则请求将失败。~我不知道我的asp.net应用程序是否支持jsop。这是我从以前的问答中使用的。假设它不支持,我是否应该恢复到json?是的,如果您不知道您的API是否支持JSONP,那么最好改用CORS。我建议您阅读以下内容: