2016-03-08 85 views
3

我有一個PHP腳本像這樣的2列意想不到的人物:parseJSON錯誤:第1行的JSON數據

$STL = array(); 
$filter = array(); 
$filter['sort_by'] = "date_added"; 
$filter['sale'] = "F"; 
$filter['per_page'] = "12"; 
$STL['filter'] = $filter; 
echo json_encode($STL); 

這給出了以下的輸出:

{"filter":{"sort_by":"date_added","sale":"F","per_page":"12"}} 

我想使用parseJSON像這樣:

$.ajax({ 
    url: 'myPHP.php', 
    type: 'post', 
    data : get_session, 
    async: false, 
    dataType: 'json', 
    success: function(result) { 
     var json = $.parseJSON(result);   
    } 
}); 

但我得到以下結果:

SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data

我猜json字符串在PHP中沒有正確格式化。我錯了什麼?

回答

3

當您指定dataType: 'json'(或jQuery檢測到JSON響應)時,它會自動爲您解析JSON。如果您然後嘗試再次解析生成的對象,則會看到您看到的錯誤。 success函數的result參數已經是您可以使用的對象。

另外請注意,您應該從未使用async: false。這是可怕的做法,因爲它會阻止UI線程,直到AJAX請求完成。這看起來像瀏覽器崩潰的用戶。從設置中移除該屬性,並將所有依賴於AJAX結果的代碼放在success處理程序中。

試試這個:

$.ajax({ 
    url: 'myPHP.php', 
    type: 'post', 
    data : get_session, 
    dataType: 'json', 
    success: function(result) { 
     console.log(result);  
    } 
}); 
+0

唉唉我給你!我在那裏的菜鳥錯誤。這很棒,謝謝Rory。 – Lee

1

錯誤
SyntaxError: JSON.parse: unexpected character at line 1 column 2 of the JSON data
發生在你的JSON對象是無效的。這種情況下,你可以通過jsonlint檢查JSON,
但這種情況下,因爲你的Ajax請求使用dataType: 'json'的,你的輸出已經被解析josn

{"filter":{"sort_by":"date_added","sale":"F","per_page":"12"}}

$.parseJSON(result)轉細繩JSON
您的請求響應已經是一個有效的JSON如此,$.parseJSON(string)返回錯誤

3

如果您使用$.parseJSON(result)已經成功的回調,然後雷莫ve dataType: 'json', from AJAX properties ..或者使用另一種方法保留dataType: 'json',因爲您已經預期JSON,並刪除$.parseJSON(result)。只使用其中一種。

相關問題