如何解决Razor Pages ajax 发布错误“SyntaxError: Unexpected token < in JSON at position 0”
我正在构建一个 AspNet Core Razor Pages 网站,但无法对服务器执行 JQuery AJAX POST 调用。 这里是服务器端代码:
public async Task<JsonResult> OnPostUpdateQRCodeAsync(int id,string name,string description)
{
...
}
这里是我的 ajax 客户端代码:
function UpdateQRCodeData(id,name,description) {
var url = "?handler=UpdateQRCode";
var token = getToken();
debugger
return $.ajax({
type: "POST",url: baseUrl + url,headers: { "RequestVerificationToken": token },data: {
id: id,name: name,description: description
},contentType: "application/json;",dataType: "json",success: function (response) {
},error: function (XMLHttpRequest,textStatus,errorThrown) {
alert(errorThrown);
}
});
}
getToken() 函数从页面获取 Antiforgery 令牌。
我收到的错误如下:
SyntaxError: Unexpected token < in JSON at position 0
我做错了什么?有人可以帮我吗?
谢谢
解决方法
这是一个工作演示:
cshtml(当使用@Html.AntiForgeryToken()
时,html会有一个隐藏的输入__RequestVerificationToken
):
@Html.AntiForgeryToken()
<button onclick="UpdateQRCodeData(1,'name','description')">Ajax</button>
js(处理程序 OnPostUpdateQRCodeAsync 的参数不是从正文中获取的,所以我删除了 contentType: "application/json;",
):
<script>
function UpdateQRCodeData(id,name,description) {
var url = "?handler=UpdateQRCode";
return $.ajax({
type: "POST",url: url,headers: { "RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() },data: {
id: id,name: name,description: description
},//contentType: "application/json;",dataType: "json",success: function (response) {
},error: function (XMLHttpRequest,textStatus,errorThrown) {
alert(errorThrown);
}
});
}
</script>
cshtml.cs:
public async Task<JsonResult> OnPostUpdateQRCodeAsync(int id,string name,string description)
{
return new JsonResult(new object { });
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。