我创建了一个巨大的 JSON 对象并将其保存在我的数据库中。但是当我加载“字符串”并在 PHP 中回显它时,我无法在 JQuery 中访问 JSON 对象。如果我想将我的 JSON 对象保存在 MySQL 数据库中,我是否必须考虑一些事情(当我只是创建数组然后用“echo json_encode($arr);”回显它时它工作正常,但我需要保存对象用于缓存)。
{"247":{"0":"This is a question","1":"","2":"247","3":"0","answers":[["Answer1","960","1"],["Answer 2","962","0"],["Answer 3","961","0"],["Answer 4","963","0"]]},{"248":{"0":"This is a question","1":"","2":"247","3":"0","answers":[["Answer1","960","1"],["Answer 2","962","0"],["Answer 3","961","0"],["Answer 4","963","0"]]}}
只是摘录
如果我只是回显这个 JSON 对象,一切正常,但如果我从数据库加载相同的字符串并回显它,它就不起作用。
更新 1:忘记告诉我我正在使用带有 UTF8_general_ci 排序规则的文本字段
更新 2:可能需要更多代码:
function start() {
$(".start").click(function () {
$.post("load_script.php", { }, function(data){
alert(data[247][0]);
}, "json");
return false;
});
}
这会加载脚本并提示“这是一个问题”
<?php
require_once('connect.php');
$ergebnis = mysql_query("SELECT text FROM cache_table ORDER BY RAND() LIMIT 1");
while($row = mysql_fetch_object($ergebnis)) {
$output = $row->text;
}
echo $output;
?>
这是脚本,我在其中使用 JSON 对象加载数据库条目。
更新 3: 我想我解决了这个问题。有些中断潜入了我的 JSON 对象,所以我在输出之前这样做:
$output = str_replace("\n", "", $output);
$output = str_replace("\r", "", $output);
$output = str_replace("\r\n", "", $output);
最佳答案
我建议查看您的 javascript 所看到的内容。不要让 jQuery 为您解释 json,而是查看原始数据:
function start() {
$(".start").click(function () {
$.post("load_script.php", { }, function(data){
alert(data);
}, "text");
return false;
});
}
例如,如果字符串的一部分因为 UTF-8 而被奇怪地编码,这可能会导致它出现。
一旦你这样做了,如果你仍然不能发现问题,试试这个代码:
var data1, data2;
function start() {
$(".start").click(function () {
$.post("load_script.php", {src: "db" }, function(data){
data1 = data;
}, "text");
$.post("load_script.php", {src: "echo" }, function(data){
data2 = data;
}, "text");
if (data1 == data2) {
alert("data1 == data2");
}
else {
var len = data1.length < data2.length ? data1.length : data2.length;
for(i=0; i<len; ++i) {
if (data1.charAt(i) != data2.charAt(i)) {
alert("data1 first differs from data2 at character index " + i);
break;
}
}
}
return false;
});
}
然后更改 PHP 代码以从数据库返回数据或简单地回显它,具体取决于 post 参数:
<?php
if ($_POST['src'] == 'db')) {
require_once('connect.php');
$ergebnis = mysql_query("SELECT text FROM cache_table ORDER BY RAND() LIMIT 1");
while($row = mysql_fetch_object($ergebnis)) {
$output = $row->text;
}
}
else {
$output = '{"247":{"0":"This is a question","1":"","2":"247","3":"0","answers":[["Answer1","960","1"],["Answer 2","962","0"],["Answer 3","961","0"],["Answer 4","963","0"]]},{"248":{"0":"This is a question","1":"","2":"247","3":"0","answers":[["Answer1","960","1"],["Answer 2","962","0"],["Answer 3","961","0"],["Answer 4","963","0"]]}}';
}
echo $output;
?>
希望对您有所帮助!
关于php - JSON 保存在数据库中并使用 JQuery 加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/975071/