好吧,我可能遇到一些无法找到的语法问题,但我认为还有其他问题。
我有一个 .php 文件,它从数据库中选择多个值,结果是“回显”回它来自的 ajax 调用。
.php 看起来像这样:
<?php
require("../config/db.php");
$db = mysql_connect(DB_HOST, DB_USER, DB_PASS)or die("Error connecting to database.");
mysql_query("SET NAMES UTF8");
mysql_select_db(DB_NAME, $db)or die("Couldn't select the database.");
$query = "SELECT online_users, chat_messages, cards_order FROM track_changes LIMIT 1";
$result = mysql_query($query, $db) or die(mysql_error().': '.$query);
$row = mysql_fetch_array($result);
$changes = array('online_users'=>$row['online_users'],
'chat_messages'=>$row['chat_messages'],
'cards_order'=>$row['cards_order']);
echo json_encode($changes, JSON_FORCE_OBJECT);
?>
jQuery ajax 调用如下所示:
$(document).ready(function() {
$.ajax({
type: 'POST',
url: '/kanbannew/php_scripts/track_changes.php',
data: { },
async: false,
success: function (data) {
console.log(data);
var users = data.online_users;
var chat = data.chat_messages;
var cards = data.cards_order;
console.log("Online users: " + users + "\nChat messages: " + chat + "\nCards order: " + cards);
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // ajax end
});
问题是在第一个警报中我得到了键:值,例如
{"online_users":"0","chat_messages":"0","cards_order":"0"}
但在第二个警报中,我对每个值都未定义:
Online users: undefined
Chat messages: undefined
Cards order: undefined
此打印来自 chrome conzole。 有什么想法为什么我无法访问零吗?
最佳答案
添加数据类型。
$(document).ready(function() {
$.ajax({
type: 'POST',
url: '/kanbannew/php_scripts/track_changes.php',
data: { },
dataType: 'json',
async: false,
success: function (data) {
console.log(data);
var users = data.online_users;
var chat = data.chat_messages;
var cards = data.cards_order;
console.log("Online users: " + users + "\nChat messages: " + chat + "\nCards order: " + cards);
},
error: function(xhr, desc, err) {
console.log(xhr);
console.log("Details: " + desc + "\nError:" + err);
}
}); // ajax end
});
关于php - 如何从php访问ajax返回的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449493/