Ajax 请求返回 200 OK,但触发错误事件而不是成功

2022-08-29 22:14:56

我已经在我的网站上实现了Ajax请求,并且我从网页调用端点。它始终返回 200 OK,但 jQuery 执行错误事件。
我尝试了很多东西,但我无法找出问题所在。我在下面添加我的代码:

jQuery Code

var row = "1";
var json = "{'TwitterId':'" + row + "'}";
$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json',
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});
function AjaxSucceeded(result) {
    alert("hello");
    alert(result.d);
}
function AjaxFailed(result) {
    alert("hello1");
    alert(result.status + ' ' + result.statusText);
}

的 C# 代码JqueryOpeartion.aspx

protected void Page_Load(object sender, EventArgs e) {
    test();
}
private void test() {
    Response.Write("<script language='javascript'>alert('Record Deleted');</script>");
}

成功删除后我需要该字符串。我可以删除内容,但未收到此消息。这是正确的还是我做错了什么?解决此问题的正确方法是什么?("Record deleted")


答案 1

jQuery.ajax 尝试根据指定的参数或服务器发送的标头转换响应正文。如果转换失败(例如,如果 JSON/XML 无效),则会触发错误回调。dataTypeContent-Type


您的 AJAX 代码包含:

dataType: "json"

在本例中,jQuery:

将响应评估为 JSON 并返回 JavaScript 对象。[...]JSON数据以严格的方式解析;任何格式错误的 JSON 都将被拒绝,并引发解析错误。[...]空响应也被拒绝;服务器应改为返回 null 或 {} 的响应。

服务器端代码返回带有状态的 HTML 代码段。jQuery 期望有效的 JSON,因此触发了错误回调,抱怨 .200 OKparseerror

解决方案是从jQuery代码中删除参数,并使服务器端代码返回:dataType

Content-Type: application/javascript

alert("Record Deleted");

但我宁愿建议返回JSON响应并在成功回调中显示消息:

Content-Type: application/json

{"message": "Record deleted"}

答案 2

您只需在AJAX调用中删除数据类型:“json”

$.ajax({
    type: 'POST',
    url: 'Jqueryoperation.aspx?Operation=DeleteRow',
    contentType: 'application/json; charset=utf-8',
    data: json,
    dataType: 'json', //**** REMOVE THIS LINE ****//
    cache: false,
    success: AjaxSucceeded,
    error: AjaxFailed
});