无效的JSON响应?

时间:2013-04-02 20:09:06

标签: jquery ajax json post

我有一个页面可以执行一些操作然后输出JSON响应。这个页面是从jQuery Ajax调用中调用的,但是当我在Firefox中检查帖子时,我得到了无效的JSON,我不明白。

以下是页面的代码

Write("{status: 'ERROR', StatusCode: '" + result.StatusCode + "',payload: ''}");

输出看起来像这样(看起来对我?)

{status: 'ERROR', StatusCode: '200',payload: ''}

这是我的AJAX电话

$.ajax({
            type:"POST",
            url: copyBUURL,
            data: { action: "copy_bu", bu_id: selected_bu.id, bu_name: selected_bu.name, new_parent: new_parent_bu.id, new_parent_name: new_parent_bu.name, new_name: $("#bu_name").val(), from_name: $("#bu_fromname").val(), email: $("#bu_email").val() },
            contentType:"application/x-www-form-urlencoded; charset=utf-8",
            dataType:"json",
            success:function(data){
                if(!data)
                {
                    alert("There was an error processing your request");
                    return false;
                }
                $("#createBtn").removeAttr("disabled");
                $("#cancelBtn").removeAttr("disabled");

                console.log("Data response: " + JSON.stringify(data));

                //xhr_users Landing Page
                showUrlInDialog('https://pages.umusic-mail.com//page.aspx?QS=472529ec60bdf32a5a46a47dceedf4ab0793800df7757ecbd2298ad0f8bc85eb&bu_id=' + data.bu_id + '&bu_name=' + data.bu_name);

                if (data.status == "OK") {

                    $("#msgBox").css("height", "80px");
                    $("#result").html("The Business Unit was successfully copied!<br /><br />Users will be assigned very shortly. (You will see a dialog window pop up in this page).");
                    $("#loader").attr("src", "https://dl.dropbox.com/u/417891/aeg-checkmark.png").css("display", "inline");
                    hideContainer();
                    resetForm();
                    $("#business_units").jstree("refresh");
                } else if (data.status.toUpperCase() == "ERROR") {
                    displayError(data.payload);
                    $("#msgBox").attr("class", "msgBoxOff");
                    $("#result").html("");
                    $("#loader").css("display", "none");
                } else {
                    // something way wrong
                }
            },
            error: function (xhr, ajaxOptions, thrownError) {
                console.log(xhr.status);
                console.log(thrownError);
            }
        });

1 个答案:

答案 0 :(得分:1)

你需要在这样的所有内容中加上双引号:

{
    "status": "ERROR",
    "StatusCode": "200",
    "payload": ""
}

或者这个:

{
    "status": "ERROR",
    "StatusCode": 200,
    "payload": ""
}

如果您希望StatusCode为整数 另外,如果您将来遇到问题,请考虑使用JSONLint验证您的json。