簡體   English   中英

jQuery處理JSON響應

[英]jQuery Handling JSON responses

服務器響應中包含以下內容:

{"invalid_emails":["adsasdasd"],"result":"success","valid_emails":["jobs@apple.com"]}

但是這個錯誤?

            $.ajax({
                type: 'POST',
                url: '/users/invitation',
                data: $('#user_invitation_new').serialize(),
                success: function(e) {
                    jsonObject = jQuery.parseJSON(e);
                    jsonObject.valid_emails
                    jsonObject.invalid_emails

我收到以下錯誤:未捕獲的TypeError:無法讀取null的屬性'valid_emails'

正如Jason和Jonathon所提到的,您不應該手動反序列化JSON。 根據您使用的jQuery版本,jQuery會根據響應的content-type標頭自動反序列化JSON。 因此,您可能正在嘗試$ .parseJSON()某些已經是對象的東西,而不是JSON字符串。

為確保jQuery為您執行此自動反序列化,請在$ .ajax()調用中添加dataType參數:

$.ajax({
  type: 'POST',
  dataType: 'json',
  url: '/users/invitation',
  data: $('#user_invitation_new').serialize(),
  success: function(response) {
    console.log(response.valid_emails);
    console.log(response.invalid_emails);
  }
});

您可能不必解析該JSON,因為它已經是JSON對象。 嘗試做

var emails = e.valid_emails;

如果仍然dataType: 'json' ,請在.ajax()聲明中包含dataType: 'json'

只需嘗試包括

dataType: 'json',

如果您的服務器使用JSON響應,則您必須運行jQuery.parseJSON(e); e參數可能已經是about,因此請為您的成功處理程序嘗試以下操作:

success: function(e)
    var valEmails = e.valid_emails,
        invalEmails = e.invalid_emails;
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM