我已经阅读了多篇类似的帖子,我的代码似乎与建议相符,但仍然没有返回数据。
这是我的JS:
$.post('php/get_last_word.php', { user_id : userID },
function( data ) {
currentLanguage = data.language_id;
currentWord = data.word_id;
console.log("currentLanguage = " + currentLanguage)
console.log("currentWord = " + currentWord);
},'json');
相关的php:
$user_id=$_POST['user_id'];
mysql_select_db(wordsicle_search);
$sql = "SELECT `language_id`, `word_id` FROM `save_state` WHERE `user_id`=$user_id";
$result = mysql_query($sql,$con);
while ($row = mysql_fetch_assoc($result)) {
$encoded = json_encode($row);
echo $encoded;
}
结果日志:
Connected successfully{"language_id":"1","word_id":"1"}
因此json数组正在被回显,但它不会在data
中结束,因为currentLanguage
和currentWord
没有被填充。这是异步性问题吗?或其他什么?
答案 0 :(得分:3)
确保您的PHP脚本中有一个有效的json返回到您的变量
如果您的json对象是这样的,
{"language_id":"1","word_id":"1"}
您可以像这样访问
currentLanguage = data.language_id;
currentWord = data.word_id;
示例JsFiddle http://jsfiddle.net/NuS7Z/8/
您可以使用http://jsonlint.com/来验证您的jSon是否格式正确。
在发布请求中指定json
作为数据类型值将确保响应以json
格式返回到成功回调。
$.post('php/get_last_word.php',{user_id:userID}, dataType:"json",function(data){
currentLanguage = data.language_id;
currentWord = data.word_id;
});
您还可以使用getJson
来获取json数据。 getJson是ajax调用的简写,数据类型为json
答案 1 :(得分:0)
尝试将您的JS更改为:
$.getJSON('php/get_last_word.php', { user_id : userID },
function( response ) {
if (response.success) {
currentLanguage = response.data.language_id;
currentWord = response.data.word_id;
console.log("currentLanguage = " + currentLanguage)
console.log("currentWord = " + currentWord);
} else {
alert('Fail');
}
});
和你的PHP:
<?php
$success = false;
$data = null;
$user_id=$_POST['user_id'];
mysql_select_db(wordsicle_search);
$sql = "SELECT `language_id`, `word_id` FROM `save_state` WHERE `user_id`=$user_id";
$result = mysql_query($sql,$con);
while ($row = mysql_fetch_assoc($result)) {
$success = true;
$data = $row;
}
// I generally format my JSON output array like so:
// Response
header('Content-Type: application/json');
echo json_encode(array(
'success' => $success,
'data' => $data
));
?>
这样它更有条理,不要忘记设置内容类型。
希望有所帮助。