Javascript 未捕获的SyntaxError:使用Ajax post的意外标记u
对于如何解决/诊断ajax/jquery错误,我感到困惑 这是我的职责: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
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。我建议您阅读以下内容: