以下是我在PHP中的内容:
$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 :(得分:1)
问题可能出在这一行:
var arrayFromPHP = JSON.parse(result);
因为您已在dataType: 'json'
选项中指定了ajax
,所以jQuery已经已经为您完成了解析。所以第二次这样做是通过在数组上执行toString
开始的,该数组执行join
,这会导致无效的JSON。
只需直接使用result
。
例如,假设你有这个JSON:
[
"<a href=\"http://stackoverflow.com\">Stack Overflow</a>",
"<a href=\"http://google.com\">Google</a>"
]
因为jQuery已经对其进行了JSON.parse
,所以result
是一个实际的数组。因此,如果您将其传递到JSON.parse
,所做的第一件事就是toString
,它会为您提供:
<a href="http://stackoverflow.com">Stack Overflow</a>,<a href="http://google.com">Google</a>
...当然不是有效的JSON。
答案 1 :(得分:0)
我会简化你的jquery ....就像这样......
$.getJSON("getDataForSlide.php", { limit: limit, required: required}, function(json) {
console.log(json);
});
答案 2 :(得分:0)
我喜欢用
jQuery.parseJSON(response);
不要忘记使用die();或退出();在你回应你的结果之后在php端,因为它是一个ajax调用。可以在此处找到此信息:http://codex.wordpress.org/AJAX_in_Plugins