无法使用Javascript解析JSON

时间:2014-03-12 22:28:29

标签: javascript php json

我从PHP文件中获得以下JSON回复:

[
    {
        "color": "black",
        "product_name": "Prod2",
        "revision": "apps/"
    },
    {
        "color": "green",
        "product_name": "Prod1",
        "revision": "dev/"
    }
]

(在JSONLint上测试好了)

和Javascript:

$(document).ready(function(){    
    $('.target').keyup(function() {
        var package_name = "name";
        var package_version = "version";
        var filter_results = "filter";
        $.post('includes/package_filter.php', { package_name: package_name, package_version: package_version, filter_results: filter_results }, function(return_result) {                   
obj = JSON.parse(return_result);
alert(obj.product_name);
           var existingDiv = document.getElementById('other');
existingDiv.innerHTML = CreateTable(return_result); 
        });
    });
});

return_result似乎不正确,因为我在执行JSON.parse时得到Error: SyntaxError: JSON.parse: unexpected end of data 我也没有进一步走向... 可能有什么不对?

我的PHP文件类似于:

<?php
function package_filter($package_name, $package_version, $filter_results){
    foreach ($descriptions as $descriptions_display) {
        ...
        $array_to_return[] = array('color' => $color , 'product_name' => $descriptions_display['product_name'] , 'revision' => $descriptions_display['revision']);
    }       
    return json_encode($array_to_return);
}
?>

我的目标是使用CreateTable函数创建一个表,但以前出现了问题。

2 个答案:

答案 0 :(得分:1)

在处理JSON时,只需将post()方法中的第四个参数设置为json

$.post('includes/package_filter.php', { /* params */ }, function(return_result) {                   
    // return_result[0].product_name;
}, 'json');

答案 1 :(得分:1)

检查响应的编码UTF-8 ASCII您可能拥有与解析器混乱的字符。