jQuery.getJSON读取数据

时间:2014-06-27 05:28:23

标签: jquery getjson

为什么下面的代码不起作用?我可以在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) {
});

2 个答案:

答案 0 :(得分:2)

我认为你的服务器正在返回字符串,而不是json对象。因此,您应该在使用前将其作为对象。使用jQuery.parseJSON(将字符串作为对象。

jQuery.post( get_data_url, FormData, function(data) {
    data=jQuery.parseJSON(data);
    sessionStorage.ticket_id = data[0].nextID;     
})

Demo

答案 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解析为对象。