2011-08-28 53 views
1

我的Ajax請求是這樣的:如何處理和輸出正確的JSON數組

從這個
$.post('newsletter.php?mode=grab', { search: searchstring }, function(data) { 
    $('#newsletter_receivers').html(
      data 
    ); 
}); 

輸出爲:(數據)

{"id":"111","fullname":"Test Test","age":"31"}{"id":"112","fullname":"Max Max","age":"31"}{"id":"113","fullname":"123 123","age":"31"}{"id":"114","fullname":"Det Fungerar","age":"31"} 

這是現在只是把這個JSON在div元素現在。

但我怎樣才能提取每個json數組並輸出全名和年齡?

因此,這將顯示爲:

Test Test - 31 
Max max - 31 
+0

那不是有效的JSON – Rafay

回答

0

我改正了你的json wichi無效。你可以這樣做:

var json = [ 
    { 
    "id": "111", 
    "fullname": "Test Test", 
    "age": "31"}, 
{ 
    "id": "112", 
    "fullname": "Max Max", 
    "age": "31"}, 
{ 
    "id": "113", 
    "fullname": "123 123", 
    "age": "31"}, 
{ 
    "id": "114", 
    "fullname": "Det Fungerar", 
    "age": "31"} 
]; 
var text = ''; 
$.each(json, function(index, b) { 
    text += b.fullname + ' - ' + b.age + '<br/>'; 
}); 

$('#newsletter_receivers').html(text); 

小提琴這裏:

http://jsfiddle.net/4crnm/

您例如:

​​
+0

您忘記了他需要首先解析json的最後一個代碼 – genesis

+0

ooooops!已編輯! :) –

+0

這好多了:p – genesis

1

如果您的有效的JSON看起來像

[{"id":"111","fullname":"Test Test","age":"31"},{"id":"112","fullname":"Max Max","age":"31"},{"id":"113","fullname":"123 123","age":"31"},{"id":"114","fullname":"Det Fungerar","age":"31"}] 

可以使用

$.post('newsletter.php?mode=grab', { search: searchstring }, function(data) { 
    data = $.parseJSON(data); 
    $.each(data, function(index,b){ 
     $('#newsletter_receivers').append('<br>'+b.fullname+' - '+b.age); 
    }); 
}); 
+0

這只是保存最後一次迭代爲HTML,因爲你在每一次迭代中都會覆蓋它! :) –

+0

@genesis試過這個,不起作用,它不輸出任何東西,當它有2個json數組時,它給了我undefined - undefinedundefined undefined。我試圖做prepend/append()所以它不覆蓋,但仍然沒有。我試過alert();沒有什麼 – Karem

+0

@NicolaPeluchetti:哎呀,編輯 – genesis

0

改變你的傑森像

{ 
    "data": [ 
     { 
      "id": "111", 
      "fullname": "Test Test", 
      "age": "31" 
     }, 
     { 
      "id": "112", 
      "fullname": "Max Max", 
      "age": "31" 
     }, 
     { 
      "id": "113", 
      "fullname": "123 123", 
      "age": "31" 
     }, 
     { 
      "id": "114", 
      "fullname": "Det Fungerar", 
      "age": "31" 
     } 
    ] 
} 

和訪問它喜歡,

$(function(){ 
$.post("path/to/json",function(data){ 
    $(data.data).each(function(i,j){ 
    alert(data.data[i].fullname); 
    }); 
    },'json'); 
}); 

whne指定dataTypejson你不需要做$.parseJSON你也可以在www.jsonlint.com

0

這不是有效的JSON驗證您的JSON。你需要把它變成一個數組或其他東西。如果你不能做到這一點的服務器端,然後試試這個:

$.post('newsletter.php?mode=grab', { search: searchstring }, function(data){ 
    $('#newsletter_receivers').html(''); 
    $.each($.parseJSON('['+data.replace(/\}\{/g, '},{')+']'), function(){ 
     $('#newsletter_receivers').append('<div>'+this.fullname+' - '+this.age+'</div>'); 
    }); 
}); 

如果你能解決這個問題的服務器端那將會是一種解決方案的好了很多。