2013-04-02 3 views
1

У меня есть страница, которая делает некоторые вещи, а затем выводит ответ JSON. Эта страница вызывается из вызова jQuery Ajax, но когда я проверяю сообщение в Firefox, я получаю Invalid 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, если у вас есть проблемы с будущим.

Смежные вопросы