JSON.parse:意外字符
JSON.parse: unexpected character
我正在尝试从PHP向div返回json编码的数组。我收到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文件时,问题似乎消失了。。不确定,但我认为这与使用NotePad++进行编辑有关。。第二次我用Submlime文本创建文件时,它很好。所以可能是编码问题。。感谢大家的投入。
可能得到无效的JSON字符串响应。我今天早上刚刚解决了类似的问题。我想先检查(try/catch)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');
}
}
- 使用提取文本webpack插件时出现意外字符
- AJAX语法错误:JSON.parse:意外字符
- JavaScript意外的令牌<,有什么方法可以逃避错误(或至少跳过那些无用的字符)
- 代码点火器:搜索自动完成 JSON 解析意外字符
- 浏览器抛出错误:解析文件时出现意外字符 ' ' (1:0):图像.png
- JSON.parse:意外字符
- "JSON_PARSING_ERROR:位置0处的意外字符(d);当从GAS发送GCM请求时
- SyntaxError:JSON.parse:登录脚本中出现意外字符
- JSON和意外字符
- Uglify JS错误:意外字符''连接时,请缩小select2
- JSON.parse:Javascript中出现意外的字符错误
- 奇怪的javascript行为-JSON.parse:意外字符
- Vimeo Slider脚本-SyntaxError:JSON.parse:意外字符
- asp.net Jquery.ajax保留JSON.分析意外字符错误
- JSON解析意外的非空白字符
- ExecJS::P rogramError: 意外字符 '#'
- 语法错误:JSON.parse:意外字符
- (仅在IE中)SCRIPT65535:对方法或属性访问的意外调用.主.js,第 152 行字符 28
- 错误:“JSON.parse:JSON 数据第 1 行第 1 列的意外字符”,当包含其他 php 文件时
- JSON 数据后出现意外的非空格字符