为什么下面的代码不起作用?我可以在FireBug中看到data
变量包含带有我期望的数据的回复:
"[{"nextID":"STK000022"}]"
但是当我尝试访问该值时,我得到“未定义”。
jQuery.post( get_data_url, FormData, function(data) {
sessionStorage.ticket_id = data[0].nextID; <--- UNDEFINED HERE
})
.done(function(data) {
showPopupMsg(successClass, false, "New ticket successfully created!<br/>New ticket number: <strong>" + sessionStorage.ticket_id);
// Reset form
jQuery( '#PartnerNewTicketForm' ).reset();
})
.fail(function(jqxhr, textStatus, error ) {
var sysError = textStatus + ", " + error;
showPopupMsg(errorClass, logoutFlag, "The application has failed to create the new ticket. Error: " + sysError);
})
.always(function(data) {
});
答案 0 :(得分:2)
我认为你的服务器正在返回字符串,而不是json对象。因此,您应该在使用前将其作为对象。使用jQuery.parseJSON(
将字符串作为对象。
jQuery.post( get_data_url, FormData, function(data) {
data=jQuery.parseJSON(data);
sessionStorage.ticket_id = data[0].nextID;
})
答案 1 :(得分:2)
由于服务器返回JSON,你需要通过给$.post
提供第4个参数来告诉jQuery:
jQuery.post( get_data_url, FormData, function(data) {
sessionStorage.ticket_id = data[0].nextID;
}, 'json')
将json
指定为dataType
参数告诉jQuery它应该将JSON解析为对象。