我遇到了将JSON从PHP传递到jQuery的奇怪行为。
我有一些文章(Drupal CMS文章),我需要将它们推入环境中。 第一个解决方案有效,而文章是在页面加载时由PHP直接推送的。但由于我的工作适用于多个CMS,因此需要花费太多时间来加载它们,所以我需要使用ajax来加载一个特定的项目。
现在,jquery看起来像这样:
function doLoadArticles() {
for (var i = 0; i< projectdata[1].length; i++){
$.ajax({
data: {ip:projectdata[0]["ip"], login:projectdata[0]["login"], pass:projectdata[0]["pass"], db:projectdata[0]["db"], datatype:projectdata[1][i], aj:"aj", fc:"doLoadArticles"},
type: "post",
url: "dataFunnel.php",
success: function(data){
console.log(data);
//console.log(jQuery.parseJSON( data )) ;
}
});
}
}
然后,在PHP方面是这段代码:
function doLoadArticles(){
$projdata;
$conn = new mysqli($_POST['ip'], $_POST['login'], $_POST['pass'], $_POST['db']);
// Check connection
if ($conn->connect_error) {
die("<div style='position:absolute; top:0;left:0; background:white;'>Connection failed: " . $conn->connect_error." <br><br>Plese try reload the page</div>");
break;
}
else{}
$sql = "Select node_revision.title, node_revision.nid, node.language, field_revision_body.body_value, field_revision_body.bundle, node_revision.timestamp
from field_revision_body
LEFT JOIN node_revision ON field_revision_body.revision_id=node_revision.vid
LEFT JOIN node ON field_revision_body.revision_id=node.vid
where field_revision_body.bundle='".$_POST['datatype']."' AND node_revision.status=1 AND node.language='cs'
ORDER BY field_revision_body.revision_id DESC LIMIT 10";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// error_log("true");
// output data of each row
$j =0;
while($row_a = $result->fetch_assoc()) {
$projdata[$j]["title"] = $row_a["title"] ;
$projdata[$j]["timestamp"] = $row_a["timestamp"] ;
$projdata[$j]["bundle"] = $row_a["bundle"] ;
$projdata[$j]["body_value"] = $row_a["body_value"];
$projdata[$j]["nid"] = $row_a["nid"];
$projdata[$j]["language"] = $row_a["language"];
$j++;
}
}
echo json_encode($projdata);
}
问题是,数据存在,只有传递本身不起作用..(可能是因为一些buged转换?)
如果我这样做
echo print_r($projdata);
它会传递数据,但不能以可用的方式传递(忽略破碎的字符,这是另一个不相关的问题,数据是真的,这才是重要的)
然而,很明显,我需要它以我可以使用的形式,所以我需要json。 但是,如果我使用
echo json_encode($projdata);
那么我有什么错误我不知道,或者它实际上是PHP实现中的某种错误? (顺便说一句,我在MS IIS7上运行PHP 5.6)
或者其他任何方式,如何在没有json转换的情况下动态加载数据?
提前致谢