Ajax调用不会返回成功

时间:2016-07-12 09:27:56

标签: c# jquery json ajax

我有一个返回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);
        }
    }

3 个答案:

答案 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) {
        }
    });
}

尝试使用布尔函数 enter image description here