以下PHP返回无效的json:
$sql = 'select * from website where websiteID = "'. $websiteID .'"';
$q = mysql_query( $sql ) or die(mysql_error());
$res = json_encode( mysql_fetch_assoc($q) );
echo $res;
这是从浏览器复制的json:
{ “websiteID”: “162”, “用户ID”: “235”, “URL”: “coucou”, “的ThemeID”: “1”, “电话”: “”, “websiteTitle”: “”, “说明”: “”, “关键词”: “”, “nomEntreprise”: “”, “住址”: “”, “电子邮件”: “”, “Page1Title1”: “参数1”, “Page1Title2”: “参数2” “Page1Title3”: “参数3”, “Page1Title4”: “parameter4”, “Page1Title5”: “parameter5”, “page1Title6”: “parameter6”, “page1Title7”: “parameter7”, “page1Title8”: “parameter8”,” page1Title9 “:” parameter9" , “page1Title10”: “parameter10”, “Page1Text1”: “parameter11”, “Page1Text2”: “parameter12”, “Page1Text3”: “parameter13”, “Page1Text4”: “parameter14”, “Page1Text5” : “parameter15”, “Page1Text6”: “parameter16”, “Page1Text7”: “parameter17”, “Page1Text8”: “parameter18”, “Page1Text9”: “parameter19”, “Page1Text10”:“parameter20 参数20参数20参数20参数20参数20 参数20参数20参数20参数20参数20 参数20参数20参数20参数20参数20 参数20参数20参数20参数20参数20 参数20参数20参数20参数20参数20 parameter20 ”, “Page1Text11”: “parameter21”, “Page1Text12”: “parameter22”, “Page1Text13”: “parameter23”, “Page1Text14”: “parameter24”, “Page1Text15”: “parameter25”, “Page1Text16”: “parameter26” “Page1Text17”: “”, “Page1Text18”: “”, “Page1Text19”: “”, “Page2Title1”: “”}
如何修复此问题并传递有效的json输出?
显然json是有效的。出于某种原因,从浏览器复制到http://jsonlint.com/时出现错误。
答案 0 :(得分:0)
它是有效的JSON。我在http://jsonlint.com/上尝试了它并解析得很好。
还可以完美地解析为JavaScript变量: http://jsfiddle.net/FdYE6/
答案 1 :(得分:0)
三个(可能的)问题,只有一个与您的问题直接相关:
但是,如果您的php-mysql模块支持函数mysql_set_charset(),则可以使用旧的mysql扩展。但是你要在两端做到这一点:插入/更新数据和检索数据时。见https://dev.mysql.com/doc/refman/5.1/en/charset.html
<?php
$mysql = mysql_connect('localhost', 'localonly', 'localonly')
if ( !$mysql ) {
youErrorHandler($mysql);
}
$rc = mysql_set_charset('utf8', $mysql);
if ( !$rc ) {
youErrorHandler($mysql);
}
$sql = sprintf(
"
SELECT
*
FROM
website
WHERE
websiteID = '%s'
LIMIT
1
",
mysql_real_escape_string($websiteID, $mysql)
);
$q = mysql_query( $sql, $mysql ) or die(mysql_error($mysql));
$row = mysql_fetch_assoc($q);
if ( !$row ) {
$row = array('error'=>'no result');
}
$res = json_encode($row);