2011-06-17 140 views
0

我已經寫在jQuery的是這種格式jQuery的JSON響應處理

$.ajax({ 
    type  : 'POST', 
    url  : 'ajax/job/getActiveJobs.php', 
    success : function(data){ 
     if(data[''] === true){ 
      alert('json decoded'); 
     } 

     $('#waiting').hide(500); 
     $('#tableData').html(data['content']); 
     $('#message').removeClass().addClass((data.error === true) 
     ?'error':'success').text(data.msg); 
     if(data.error === true) 
      $('#message') 

    }, 
    error : function(XMLHttpRequest, textStatus, errorThrown){ 
     $('#waiting').hide(500); 
     $('#message').removeClass().addClass('error').html(data.msg); 
    } }) 

我把它這個返回有效JSON的AJAX查詢是不正確的,因爲它是不顯示的數據,如果我用

$('#mydiv').html(data); 

我得到所有的數據並顯示。

任何幫助非常感謝

+1

如果你發佈你的ajax「成功」處理程序的完整代碼,這將有很大的幫助。你在這裏發佈的內容看起來不錯,所以它一定是別的。 – Pointy 2011-06-17 08:03:32

+0

嘗試一個'alert(data)'並檢查你得到的是什麼類型的對象。可能它不被解釋爲JSON。 – DanielB 2011-06-17 08:05:42

回答

1

要麼設置dataTypejson或使用var json = JSON.parse(data)做手工。

編輯

我加入這個,因爲別人建議eval,不這樣做,因爲它被直接傳遞到一個JSON對象沒有任何衛生第一,允許腳本獲得通過領先的直入一個XSS漏洞。

+0

感謝康納史密斯我會接受你的答案在6分鐘內大聲笑有多奇怪我不能接受答案,當你的問題解決了。我不會使用eval()不要擔心:)再次感謝 – Deviland 2011-06-17 08:12:05

+0

很高興我能夠幫助:) – 2011-06-17 08:14:11

+0

不,它使用:'new Function(「return」+ data))();'如果JSON.parse不是可用。源代碼,jQuery源代碼:https://gist.github.com/277432 – 2011-06-17 08:30:42

4

設置dataTypejson所以jQuery將在JSON轉換爲JavaScript Object

或者,使用getJSON()或發送application/json mime類型。

0

的數據是JSON的,所以你會想這樣做:

success: function (data) { 
    var newobject = eval(data); 
    alert(newobject.msg); 

} 

或做到這一點:

$ajax({ 
    url: url, 
    data: {}, 
    dataType: "json", 
    success: function (newObject) { 
    alert(newobject.msg); 
} 
}); 
+1

不要這樣做。 Eval非常糟糕! http://stackoverflow.com/questions/1843343/json-parse-vs-eval – 2011-06-17 08:07:36

+0

不用擔心沒有使用eval的意圖:)雖然我很欣賞嘗試幫助:) – Deviland 2011-06-17 08:09:15