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

jQuery代码

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#代码


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


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

评论

您是否可以通过JSON验证器运行JqueryOperation.aspx的输出,并查看其是否有效JSON

像jsonlint.com一样。您还必须检查发送的参数。当前您尚未设置任何参数名称。如果参数是TwitterId,则必须将对象传递给数据,而不是字符串:data:{TwitterId:row}。

Jqueryoperation.aspx页面是否返回(有效)JSON?

可能您的服务器端代码引发了异常..您在catch块中返回的响应是什么?

@Raghav,如果服务器抛出异常以处理请求,则HTTP返回码将为500。

#1 楼

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


您的AJAX代码包含: >
在这种情况下,jQuery:


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


您的服务器端代码返回状态为200 OK的HTML代码段。 jQuery期望使用有效的JSON,因此引发抱怨parseerror的错误回调。解决方案是从jQuery代码中删除dataType参数,并使服务器端代码返回: />
dataType: "json"


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

Content-Type: application/javascript

alert("Record Deleted");


评论


感谢您的回复,您能告诉我一件事如何从后面的代码返回json值。我在C#中使用Asp.net。这解决了我的问题,但也请让我知道这件事。

–潘卡吉·米什拉(Pankaj Mishra)
2011年5月31日11:37

@Pankaj:如果您将其发布为另一个问题会更好。但是答案很简单:两种方法(i)代替$ .ajax,可以尝试$ .getScript。在服务器端C#脚本内部,只需放入alert('Record Deleted'); (没有