我从服务器响应中得到以下信息:
{"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:无法读取属性'valid_emails'为null
答案 0 :(得分:6)
正如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);
}
});
答案 1 :(得分:2)
您可能不必解析该JSON,因为它已经是JSON对象。尝试做
var emails = e.valid_emails;
如果仍然无效,请在dataType: 'json'
声明中加入.ajax()
。
答案 2 :(得分:0)
如果您的服务器使用JSON响应,那么您必须运行jQuery.parseJSON(e);
。 e
参数可能已经是约束,因此请尝试使用此成功处理程序:
success: function(e)
var valEmails = e.valid_emails,
invalEmails = e.invalid_emails;
};
答案 3 :(得分:0)
试试包括
dataType: 'json',