2013-04-02 127 views
1

我有一个页面,做一些东西,然后输出一个JSON响应。这个页面是从jQuery Ajax调用中调用的,但是当我在Firefox中检查后,我得到了无效的JSON,我不明白。无效的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

错误是正确的,您的JSON无效。每个键都需要用双引号括起来,并且字符串需要用双引号括起来。 –

回答

1

你需要有像这样的双引号:

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

或者这样:

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

如果你想StatusCode是整数。
另外,如果您有将来的问题,请考虑使用JSONLint来验证您的json。