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ため、最終的には ではありません。これは非同期性の問題ですか?または、他の何か?currentLanguagecurrentWord

4

2 に答える 2

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 は、データ型が json の ajax Call の短縮形です。

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 に答える