[英]JSON.parse: unexpected character
我正在嘗試將JSON編碼數組從PHP返回到div。 我收到JSON.parse:意外字符。 任何幫助表示贊賞。
詢問
<script type="text/javascript">
$(document).ready(function(){
var acct =$('#acct').val();
$.getJSON("CJS/jsontest.php",{acct: acct}, function(data){
$('#result').html(data);
});
});
</script>
的PHP
<?php
include_once '../Functions/dbconnect.php';
$varacctname = $_REQUEST['acct'];
$varViewContacts = mysql_query("SELECT * FROM contacts WHERE c_company = '$varacctname'");
$rows = array();
while ($row = mysql_fetch_assoc($varViewContacts)) {
$rows[] = $row;
}
echo json_encode($rows);
我的JSON
[{"c_ID":"21","c_FirstName":"Mike","c_LastName":"Be","c_Phone":"123456789","c_ext":"0","c_fax":"0","c_address1":"","c_address2":"","c_city":"","c_state":"","c_zip":"0","c_country":"Account","c_Email":"mike.be@test.com","c_Mobile":"123456789","c_company":"TEST"}]
發送數據之前,您是否在PHP代碼中的任何位置設置了內容類型。 我在您的示例中看不到它。
您應該具有:header('Content-Type:application / json');
我已經對您的代碼進行了簡單的測試,對我來說效果很好。 這是代碼。
var JSON = '[{"c_ID":"21","c_FirstName":"Mike","c_LastName":"Be","c_Phone":"123456789","c_ext":"0","c_fax":"0","c_address1":"","c_address2":"","c_city":"","c_state":"","c_zip":"0","c_country":"Account","c_Email":"mike.be@test.com","c_Mobile":"123456789","c_company":"TEST"}]';
var parsed = $.parseJSON(JSON);
console.log(parsed);
我正在使用最新版本的JQuery,它以正確的方式解釋了JSON。
因此,在我的opnion中,$。getJSON()方法無法識別傳入的JSON。 如果您以文本形式獲取數據,然后通過$ .parseJSON()對其進行解析(請不要忘記在項目中包含JQuery的最新版本),那么它可能對您有用 。 請嘗試一下,然后通知我,我將相應地更改代碼。
我首先嘗試發送虛擬數據,例如(根據需要進行調整-您明白了):
echo json_encode(array(array('name' => 'Joe')));
如果這行得通,那么我會懷疑數據庫中會出現一些字符編碼問題,並開始查看utf8轉換器函數(它們在線上大量出現php json編碼問題)。 瀏覽器控制台可能正在消毒,這可能解釋了為什么它可以直接工作。
如果它不起作用,那么我將使用上面的回顯行制作一個php頁面,以確保沒有發送其他任何內容(並且不要添加閉合的php標簽-這樣更安全)
我還將調查您的php版本-從我的理解中,有些字符串有問題。 您可以升級或嘗試使用為早期php版本(例如此版本)制作的替代json_encode函數。
很奇怪,但是當重新創建PHP文件時,問題似乎消失了。 因此可能是編碼問題。謝謝大家的投入。
可能您收到無效的JSON字符串響應。 我今天早上才解決類似的問題。 我願意先檢查(嘗試/捕獲)ajax響應字符串(如果可以解析),而不是直接調用JSON屬性(在我的情況下為jsonRes.result)。 因此,請嘗試將以下代碼放入AJAX完整的回調函數中:
complete: function(data) {
var jsonRes = null;
try {
jsonRes = JSON.parse(data.responseText);
}
catch(e) {
jAlert('Invalid JSON object);
}
if (jsonRes===null || jsonRes.result===undefined) {
jAlert('Invalid Ajax response structure');
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.