php - jQuery $.post 不返回 JSON 数据

标签 php json jquery

我已经阅读了多篇类似的文章,并且我的代码似乎与建议相匹配,但仍然没有返回数据。

这是我的 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 结束,因为 currentLanguagecurrentWord 没有被填充。这是异步的问题吗?还是别的什么?

最佳答案

确保从 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

http://api.jquery.com/jQuery.getJSON/

关于php - jQuery $.post 不返回 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10082676/

相关文章:

java - 如何从 Java 发送压缩 (gzip) JSON 作为对 Ajax 请求的响应?

php - jQuery Get 请求当前 session

php - 请帮助我编辑我的.htaccess文件,以允许网址中使用连字符

java - 如何在自定义解串器中使用 jackson ObjectMapper?

javascript - 删除 JavaScript 中 JSON 对象的重复键,以不同的方式构造 JSON

javascript - 如何使用 javascript 和 regex 从标签 div 获取 id 值?

javascript - D3.json 设置缓存为 false

javascript - 使用 PHP 实现多个谷歌地图标记

php - 在存储在 webroot 之外的浏览器中打开 PDF

jquery - 为什么这个效果只在第一次有效?