繁体   English   中英

jQuery $.post 不返回 JSON 数据

[英]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中结束,因为currentLanguagecurrentWord没有被填充。 这是异步性的问题吗? 或者是其他东西?

确保你有一个有效的 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

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

尝试将您的 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM