无法将PHP数组传递给jquery:JSON数据后出现意外的非空白字符

时间:2013-06-18 21:07:41

标签: php jquery json

以下是我在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中形成数组的正确方法?

3 个答案:

答案 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