【发布时间】:2016-07-12 09:27:56
【问题描述】:
我有一个 Ajax 调用,它返回一个 JSON 对象,该对象中有一个属性,用于说明调用是否成功。出于某种原因,即使调用成功返回,AJAX 也不会命中它,事实上它总是返回失败。不知道为什么。
AJAX:
function GetSubTaskStories() {
$.ajax({
type: "POST",
url: "Story.aspx/GetSubTaskStories",
data: JSON.stringify({ id: GetSubTaskID() }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
if (data.success) {
alert("Success: True");
} else {
alert("Success: False");
}
},
error: function (data) {
}
});
}
服务器:
[WebMethod]
public static string GetSubTaskStories(string id)
{
// Do some stuff.
JavaScriptSerializer jss = new JavaScriptSerializer();
try
{
var storiesObj = new { success = true, stories = stories };
return jss.Serialize(storiesObj);
}
catch (Exception ex)
{
var error = new { success = false };
return jss.Serialize(error);
}
}
【问题讨论】:
-
当你说“它总是作为失败返回”时,你的意思是它运行了“成功”功能,但随后警告“成功:假”,或者你的意思是它运行了“错误”功能?顺便说一句,你的错误函数的签名是错误的,它应该是 Function( jqXHR jqXHR, String textStatus, String errorThrown ) - 见api.jquery.com/jquery.ajax
-
什么是失败信息?
-
@ADyson,是的,就是这样。该对象作为成功返回,但“Success: False”命中而不是返回“True”。
-
在成功函数的开头,输入
console.log(JSON.stringify(data));并检查返回的 JSON 的结构是否完全符合您的预期 -
@MichaelMao,错误消息显示“Success: False”,即使成功属性可能为“true”