2014-03-12 27 views
1

解析我有一个PHP文件中的以下JSON回复:JSON无法使用JavaScript

[ 
    { 
     "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似乎不正确,因为我得到Error: SyntaxError: JSON.parse: unexpected end of data时做JSON.parse 我也不会去更进一步的alrt ... 什么可能是错的?

我的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功能,但有错之前的东西。

+1

您发布的JSON字符串很好。这里一定还有别的事情要做。 –

+0

尝试使用'eval('('+ return_result +')')'。 – PHPglue

+0

你确定jQuery没有注意到响应是JSON并已经将它转换为一个对象给你? –

回答

1

JSON刚刚成立的第四个参数中post()方法处理,以json

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

我试过了,我没有收到任何错误,但是所有放在// return_result [0] .product_name;不会执行 – remyremy

+1

@remyremy:正如Qualcuno所述,使用您的浏览器开发工具来查看您收到的确切响应。 –

+0

@FelixKling我试过了,Firebug中的Response选项卡是空的。我想没有任何回报。 – remyremy

1

检查响应UTF-8 ASCII的编码,你可能有与该解析器搞乱人物。