我尝试了很多事情,但是我找不到问题所在。我在下面添加我的代码:
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")
字符串。我可以删除内容,但是没有收到此消息。这是正确的还是我做错了什么?解决此问题的正确方法是什么?#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'); (没有
评论
您是否可以通过JSON验证器运行JqueryOperation.aspx的输出,并查看其是否有效JSON像jsonlint.com一样。您还必须检查发送的参数。当前您尚未设置任何参数名称。如果参数是TwitterId,则必须将对象传递给数据,而不是字符串:data:{TwitterId:row}。
Jqueryoperation.aspx页面是否返回(有效)JSON?
可能您的服务器端代码引发了异常..您在catch块中返回的响应是什么?
@Raghav,如果服务器抛出异常以处理请求,则HTTP返回码将为500。