猿问

AJAX请求返回200 OK,但是一个错误事件被触发而不是成功。

AJAX请求返回200 OK,但是一个错误事件被触发而不是成功。

我已经在我的网站上实现了一个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);}

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")成功删除后的字符串。我可以删除内容,但我没有收到这条消息。这是对的还是我做错了什么?解决这个问题的正确方法是什么?


森林海
浏览 1005回答 3
3回答

喵喵时光机

jQuery.ajax根据指定的dataType参数或Content-Type服务器发送的标头。如果转换失败(例如,如果JSON/XML无效),则会触发错误回调。Ajax代码包含:dataType:&nbsp;"json"在本例中,jQuery:将响应计算为JSON并返回一个JavaScript对象。[…]JSON数据是以严格的方式解析的;任何格式错误的JSON都会被拒绝,并抛出一个解析错误。[…]空响应也被拒绝;服务器应该返回NULL或{}响应。服务器端代码返回HTML片段200 OK现状。jQuery期待有效的JSON,因此引发错误回调,抱怨parseerror.解决方案是删除dataType参数,并使服务器端代码返回:Content-Type:&nbsp;application/javascript alert("Record&nbsp;Deleted");但我建议返回一个JSON响应,并在成功回调中显示消息:Content-Type:&nbsp;application/json{"message":&nbsp;"Record&nbsp;deleted"}

MMTTMM

我很幸运地使用了多重空间分隔dataTypeS(jQuery 1.5+)。如:$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;'POST', &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'Jqueryoperation.aspx?Operation=DeleteRow', &nbsp;&nbsp;&nbsp;&nbsp;contentType:&nbsp;'application/json;&nbsp;charset=utf-8', &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;json, &nbsp;&nbsp;&nbsp;&nbsp;dataType:&nbsp;'text&nbsp;json', &nbsp;&nbsp;&nbsp;&nbsp;cache:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;AjaxSucceeded, &nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;AjaxFailed});

守候你守候我

您只需删除数据类型:“json”在Ajax调用中$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;'POST', &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'Jqueryoperation.aspx?Operation=DeleteRow', &nbsp;&nbsp;&nbsp;&nbsp;contentType:&nbsp;'application/json;&nbsp;charset=utf-8', &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;json, &nbsp;&nbsp;&nbsp;&nbsp;dataType:&nbsp;'json',&nbsp;//****&nbsp;REMOVE&nbsp;THIS&nbsp;LINE&nbsp;****// &nbsp;&nbsp;&nbsp;&nbsp;cache:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;success:&nbsp;AjaxSucceeded, &nbsp;&nbsp;&nbsp;&nbsp;error:&nbsp;AjaxFailed});
随时随地看视频慕课网APP
我要回答