1

我已经阅读了多个类似的帖子,我的代码似乎与建议相匹配,但仍然没有返回数据。

这是我的 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,因为currentLanguageandcurrentWord没有被填充。这是异步的问题吗?或者是其他东西?

4

2 回答 2

3

确保您有一个有效的 json 从您的 PHP 脚本返回到您的变量

如果你的 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 Call 的简写,数据类型为 json

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

于 2012-04-10T03:17:17.270 回答
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
));

?>

这样它更有条理,不要忘记设置内容类型。

希望有帮助。

于 2012-04-10T04:42:58.907 回答