我有一个json响应,它是从表单的ajax请求中获得的。响应存储在名为response
的变量中,如下所示:
{
data: {
attributes:{
//list of key-values
}
id: null,
type: "job"
},
links: {
modal: "/client/render/modals/job/success"
},
message: "job successfully created",
success: "ActionSuccess"
}
问题出在我试图做的时候:
response.links.modal
或
response['links']['modal']
我收到此错误:
Uncaught TypeError: Cannot read property 'modal' of undefined
为什么当我在JSON响应中看到它时,我认为链接不存在(我可以看到它存在于响应的预览中(使用chrome))。
编辑:
发出ajax请求的代码:
function submit_form (request,method,data,type,target) {
switch(type){
case 'modal':
$('#' + target).openModal();
break;
case 'target':
break;
case 'page':
break
}
$.ajax({
url: request,
type: method,
data: data,
success: function(response){
submit_callback(response,type,target)
}
})
}
回调:
function submit_callback(response,type,target) {
switch(type){
case 'modal':
console.log(response) //shows that links exists
console.log(response.links) //logs out as undefined
post_page(response.links.modal,response.message,target)
break;
case 'target':
change_target(response,target);
setUpPageElements();
break
case 'page':
('body').html(response)
break;
}
}
编辑:
使用JSON.stringify后的响应:
"{\"message\":\"job successfully created\",\"success\":\"ActionSuccess\",\"data\":{\"attributes\":\"//list of key-values\"},\"type\":\"job\",\"id\":null},\"links\":{\"modal\":\"/client/render/modals/job/success\"}}"
仅仅是一个FYI,属性确实存在,但这个问题不是必需的,所以我删除了它们,他们实际上并不是\"//list of key-values\"
。
答案 0 :(得分:0)
好的,事实证明问题不是在前端而是在后端;由于某种原因它没有以json而不是文本的形式返回响应,在摆弄代码后我修复了问题,它现在将JSON作为JSON而不是JSON字符串返回。
记住小孩,始终确保服务器返回正确的类型!