【发布时间】:2016-02-26 05:19:02
【问题描述】:
我无法从服务器上的 php 获取 json
javascript 代码是:
$.ajax({
type: "POST",
url: "doingSQL.php",
data: label,
success: function(result) {
$("#p").html("All my book: <br>"+ result);
console.log(result);
},
dataType: "json",
error: function(xhr){
console.log("error");
}
});
doingSQL.php 的工作是从 SQL 数据库中选择 bookName 并将数据转换为 json。它看起来像这样:
/* the server connecting code is omitted */
if ($_SERVER["REQUEST_METHOD"] == "POST") {
$label = $_POST["label"];
}
$sql = "SELECT * FROM book WHERE ower = '". $label."'";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// output data of each row
while($row = mysqli_fetch_assoc($result)) {
$Arr = array("id" => $row["book_id"],
"bookName" => $row["bookName"]);
$bookDetail[] = array( "book".$i => $Arr);
}}
}
mysqli_close($conn);
$json = array("mybook" => $bookDetail);
echo json_encode($json);// return json
但我在 html 控制台中得到的结果是“[]”或数组 [0]。
json是合法的json格式,如下:
{
"mybook":[
{
"book0":{
"id":"0",
"bookName":"bookA"
}
},
{
"book1":{
"id":"1",
"bookName":"bookB"
}
}
]
}
但是,如果代码在 php 中的 SQL 连接之外。 json 返回将成功。 它看起来像:
/* the server connecting code is omitted */
mysqli_close($conn);
// if outside the SQL connection
$ArrA = array("id" => "0", "bookName" => "bookA");
$ArrB = array("id" => "1", "bookName" => "bookB");
$bookDetail[] = array( "book0" => $ArrA);
$bookDetail[] = array( "book0" => $ArrB);
$json = array("mybook" => $bookDetail);
echo json_encode($json);// return json success
有什么想法吗?
【问题讨论】:
-
关闭连接后,您似乎正在分配从查询返回的值。
-
另请注意,如果这是生产代码,您很容易受到SQL Injection
标签: javascript php json ajax post