我的PHP文件从PostgreSQL数据库中检索数据。我必须将它们发送回两个不同数组的jQuery函数。一个是通过使用:
echo json_encode($tb);
并且工作正常,在我的js文件中我通过使用正确获取数据:
$.ajax({
type: "POST",
url: './DB/lb.php',
data: {d_p: oa},
success: function (tb) {
console.log(tb);
})
控制台输出正如预期的那样。
另一个总是PHP数组,但我必须替换字符:
str_replace(array('[', ']'), '', htmlspecialchars(json_encode($ltb), ENT_NOQUOTES));
但如果我写:
$.ajax({
type: "POST",
url: './DB/lb.php',
data: {d_p: oa},
success: function (tb, ltb) {
console.log(tb);
console.log(ltb);
})
console.log(ltb)只输出
成功
我错了什么?
答案 0 :(得分:0)
succes
的第二个参数是响应状态。这是因为您在记录success
时获得tlb
。
您一次只能返回一个JSON,因此请将它们合并:
echo json_encode(array("other stuff", "tb" => $tb, "tbl" => array("some" => "data")));
在JS方面,您可以通过索引或键轻松访问它们:
tb[0]; // "other stuff"
tb.tb; // content of $tb variable
tb.tbl; // {some: "data"}
答案 1 :(得分:0)
最终工作代码:
<强> PHP:强>
$tb = array();
$ltb = array();
while ($row = pg_fetch_array($result, NULL, PGSQL_ASSOC))
{
array_push($ltb, $row["x"], $row["y"]);
array_push($tb, $row["z"],$row["t"]);
}
echo json_encode(array('tb'=>$tb,'ltb'=>$ltb));
<强> JS 强>
$.ajax({
type: "POST",
url: './DB/lb.php',
dataType: 'json', // this is what I forgot!!!
data: {d_p: oa}, // passes variable for PHP function
success: function (response) {
console.log(response.tb+" "+ response.ltb);
$.each(response.tb, function( i, item ) {
// iterate over tb array
}
$.each(response.ltb, function( i, item ) {
// iterate over ltb array
}
});