我有一个返回JSON对象的Ajax调用,在该对象中是一个属性,表明调用是否成功。出于某种原因,即使呼叫恢复成功,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) {
}
});
}
SERVER:
[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);
}
}
答案 0 :(得分:1)
您将返回一个属性为d
的对象,该属性是一个包含结果序列化版本的字符串。从您的示例中看到所有引号和转义引号并不容易。
删除jss.serialize
并返回匿名对象作为结果。
[WebMethod]
public static object GetSubTaskStories(string id)
{
// Do some stuff.
try
{
var storiesObj = new { success = true, stories = stories };
return storiesObj;
}
catch (Exception ex)
{
var error = new { success = false };
return error;
}
}
答案 1 :(得分:0)
根据评论,我认为您需要将成功功能更改为:
success: function (data) {
if (data.d.success == true) {
alert("Success: True");
} else {
alert("Success: False");
}
}
以反映从服务器返回的JSON的结构
答案 2 :(得分:0)
<script>
function GetSubTaskStories() {
$.ajax({
type: "POST",
url: "GetSubTaskStories",
data: JSON.stringify({ id: 5 }),
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert(Boolean(data.success));
if (Boolean(data.success)) {
alert("Success: True");
} else {
alert("Success: False");
}
},
error: function (data) {
}
});
}