2013-06-18 32 views
0

這是我在PHP:無法PHP數組傳遞給jQuery的:後JSON數據意外非空白字符

$arrayresults = array(); 
while($popularbrushesrow = mysql_fetch_array($popularBrushes)){ 

$arrayresults[] = '<a href="brushdescription.php?id='.$popularbrushesrow['bd_brushid'].'"><img class="slideImg" alt="'.$popularbrushesrow['bd_brushname'].'" title="'. $popularbrushesrow['bd_brushname'].'" src="'.$popularbrushesrow['bd_imagefilepath'].'" /></a>'; 

} 

echo json_encode($arrayresults); 

現在,jQuery的:

$.ajax({ 
    type:'GET', 
    url:'getDataForSlide.php', 
    data:"limit="+limit+"&required="+required, 
    dataType:"json", 
    cache:true, 
     success: function(result){ 
    var arrayFromPHP = JSON.parse(result); 
    alert(arrayFromPHP); 
    } 
}) 

可能有人請幫助我出去了。什麼是在JSON中形成數組的正確方法?

+0

你實際上是否返回任何東西?數據是否實際附加到GET? – KyleK

+2

如果你指定了數據類型,jQuery已經爲你解析了JSON。 –

+2

做一個'console.log(result)'看看會發生什麼。在你的json_encode調用之後,可能你有一個關閉腳本或輸出非json數據的東西,導致錯誤。例如一個HTML頁腳或什麼的。 –

回答

1

的問題很可能是這一行:

var arrayFromPHP = JSON.parse(result); 

因爲您在ajax選項中指定dataType: 'json',jQuery有已經進行解析爲您服務。因此,第二次嘗試通過在陣列上執行toString開始,該陣列會執行join,這會導致無效的JSON。

直接使用result即可。

例如,假設你有這樣的JSON:

[ 
    "<a href=\"http://stackoverflow.com\">Stack Overflow</a>", 
    "<a href=\"http://google.com\">Google</a>" 
] 

因爲jQuery已經做好就可以了JSON.parseresult是一個實際的數組。所以,如果你把它傳遞到JSON.parse,首先映入眼簾的是toString,它給你這樣的:

<a href="http://stackoverflow.com">Stack Overflow</a>,<a href="http://google.com">Google</a> 

...這是當然,有效的JSON不是。

0

我會簡化您的jQuery ....這樣...

$.getJSON("getDataForSlide.php", { limit: limit, required: required}, function(json) { 
console.log(json); 
}); 
0

我喜歡用

jQuery.parseJSON(response); 

而且不要忘了使用模具();或退出();因爲它是一個Ajax調用,所以在你迴應你的結果後,在PHP端。這個信息可以在這裏找到:http://codex.wordpress.org/AJAX_in_Plugins

+0

爲什麼你把我的答案標記爲沒用? –

+1

我沒有標記..... :)但它可能是因爲他使用json作爲數據類型,所以解析已經爲他處理了 – KyleK

+0

我也沒有標記它 –

相關問題