Ajax请求返回200 OK,但是触发了错误事件而不是成功 [英] Ajax request returns 200 OK, but an error event is fired instead of success

查看:692
本文介绍了Ajax请求返回200 OK,但是触发了错误事件而不是成功的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have implemented an Ajax request on my website, and I am calling the endpoint from a webpage. It always returns 200 OK, but jQuery executes the error event. I tried a lot of things, but I could not figure out the problem. I am adding my code below:

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);
}



JqueryOpeartion.aspx



C# code for JqueryOpeartion.aspx

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

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

I need the ("Record deleted") string after successful deletion. I am able to delete the content, but I am not getting this message. Is this correct or am I doing anything wrong? What is the correct way to solve this issue?

推荐答案

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

jQuery.ajax attempts to convert the response body depending on the specified dataType parameter or the Content-Type header sent by the server. If the conversion fails (e.g. if the JSON/XML is invalid), the error callback is fired.

您的AJAX代码包含:

Your AJAX code contains:

dataType: "json"

在这种情况下jQuery:

In this case jQuery:


将响应计算为JSON并返回一个JavaScript对象。 [...]
JSON数据以严格的方式解析;任何格式错误的JSON都被
拒绝,并抛出一个解析错误。 [...]空的回复也是
拒绝;服务器应返回null或{}的响应。

Evaluates the response as JSON and returns a JavaScript object. […] The JSON data is parsed in a strict manner; any malformed JSON is rejected and a parse error is thrown. […] an empty response is also rejected; the server should return a response of null or {} instead.

您的服务器端代码返回带有 200 OK 状态。 jQuery期待有效的JSON,因此触发错误回调抱怨 parseerror

Your server-side code returns HTML snippet with 200 OK status. jQuery was expecting valid JSON and therefore fires the error callback complaining about parseerror.

解决方法是删除 dataType 来自jQuery代码的参数并返回服务器端代码:

The solution is to remove the dataType parameter from your jQuery code and make the server-side code return:

Content-Type: application/javascript

alert("Record Deleted");

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

But I would rather suggest returning a JSON response and display the message inside the success callback:

Content-Type: application/json

{"message": "Record deleted"}

这篇关于Ajax请求返回200 OK,但是触发了错误事件而不是成功的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆