[英]jQuery $.post not returning JSON data
我已经阅读了多篇关于此的类似帖子,我的代码似乎符合建议,但仍然没有返回数据。
这是我的 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
没有被填充。 这是异步性的问题吗? 或者是其他东西?
确保你有一个有效的 json 从你的 PHP 脚本返回你的变量
如果你的 json object 是这样的,
{"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 的简写 Call with datatype as json
尝试将您的 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
));
?>
这样更有条理,不要忘记设置内容类型。
希望有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.