2014-03-12 59 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的編碼,你可能有與該解析器搞亂人物。