2017-04-06 63 views
0

我意识到已经有关于此的问题,但没有人能够解决我的问题。AJAX提交 - 状态200出错

我试图提交使用AJAX在jQuery的模态形式,但它不是尽管说状态200.在这里工作的代码:

$(document).ready(function() { 
    $("#dialog-form").dialog({ 
     autoOpen: false, 
    }); 

    $("#add-course").click(function() { 
     $("#dialog-form").dialog("open"); 
     return false; 
    }); 

    $("#btncancel").click(function() { 
     $("#dialog-form").dialog("close"); 
    }); 

    $('#<%=btnsubmit.ClientID%>').on('click', function (e) { 
     e.preventDefault(); 
     var courseDetails = {}; 
     courseDetails.Code = $('#<%=addcode.ClientID%>').val(); 
     courseDetails.Name = $('#<%=addname.ClientID%>').val(); 

     var jsonData = JSON.stringify({ 
      courseDetails: courseDetails 
     }); 

     $.ajax({ 
      url: '<%=ResolveUrl("updatetest.aspx/addCourseSP") %>', 
      type: "POST", 
      data: jsonData, 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: OnSuccess, 
      error: OnErrorCall, 
     }); 

     function OnSuccess(response, jqXHR, textStatus, errorThrown) { 
      var result = response.d; 
      if (result == "success") { 
       $("#msg").html("Success"); 
       $("#dialog-form").dialog("close"); 
      } else { 
       $("#msg").html("jqXHR: " + JSON.stringify(jqXHR) + " " + "AJAX error: " + textStatus + ' : ' + errorThrown); 
      } 
     } 

     function OnErrorCall() { 
      $("#msg").html("error"); 
     } 
    }); 
}); 

后面的代码调用,我检查作品的存储过程。我也检查了jsonlint.com上的JSON字符串,它说它是有效的。

我已经在浏览器(Chrome/Firefox)中使用F12进行了检查,它基本上和d:“error”一样表示了同样的事情,状态200。 JSON字符串在Params下,所以我不认为这是问题。

我试过使用各种不同的方式进行调试,现在它返回jqXHR:“成功”AJAX错误:[对象对象]:未定义。我不知道还有什么可以尝试的。有人有主意吗?

回答

0

jQuery.ajax()显示成功回调为:

success

Type: Function(Anything data, String textStatus, jqXHR jqXHR)

当您尝试在脚本中使用不符合您的参数列表

function OnSuccess(response, jqXHR, textStatus, errorThrown) 

textStatus不是字符串和errorThrownundefined

因此,请求成功(状态200),但您的脚本在响应返回给客户端后生成错误。

+0

谢谢!我修改了我的函数,现在我得到了:1)jqXHR {“readyState”:4,“responseText”:“{\”d \“:\”error \“}”,“responseJSON”:{“d” :“error”},“status”:200,“statusText”:“OK”} 2)text status:success 3)data:[object Object] – user7703048

+0

如果你问为什么状态仍然是200,那是因为框架认为请求已成功处理。如果您试图捕获业务逻辑错误,则需要显式更改返回状态或在响应'responseJSON'中检查错误标志。 – Jasen

0

你的函数包含以下行

dataType: "json", 

这意味着返回数据的格式必须正确JSON,如果不是会认为这是错误

相关问题