我已经在我的网站上实现了Ajax请求,并且正在从网页调用端点。它总是返回 200 OK ,但是 jQuery 执行error事件。 我尝试了很多事情,但无法弄清问题所在。我在下面添加我的代码:
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
protected void Page_Load(object sender, EventArgs e) { test(); } private void test() { Response.Write("<script language='javascript'>alert('Record Deleted');</script>"); }
("Record deleted")成功删除后,我需要该字符串。我可以删除内容,但是没有收到此消息。这是正确的还是我做错了什么?解决此问题的正确方法是什么?
("Record deleted")
jQuery.ajax尝试根据指定的dataType参数或Content- Type服务器发送的标头转换响应主体。如果转换失败(例如,如果JSON / XML无效),则会触发错误回调。
jQuery.ajax
dataType
Content- Type
您的AJAX代码包含:
dataType: "json"
在这种情况下,jQuery:
将响应评估为JSON并返回一个JavaScript对象。[…]严格解析JSON数据;任何格式错误的JSON都会被拒绝,并引发解析错误。[…]空响应也被拒绝;服务器应返回null或{}的响应。
您的服务器端代码返回带有200 OK状态的HTML代码段。jQuery期望使用有效的JSON,因此会引发抱怨的错误回调parseerror。
200 OK
parseerror
解决方案是dataType从jQuery代码中删除参数,并使服务器端代码返回:
Content-Type: application/javascript alert("Record Deleted");
但我宁愿建议返回JSON响应并在成功回调中显示消息:
Content-Type: application/json {"message": "Record deleted"}