2012-04-10 23 views
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配列がエコーされているが、それはありませんcurrentLanguagecurrentWordはpopuではないため、dataになりますレット。これは非同期性に問題がありますか?または、他の何か?

+0

なぜwhileループですか?あなたは複数の結果を期待していますか?もしそうなら、それはあなたの問題です。そうでなければ、それを 'if'にしてください。それでは 'language_id'と' word_id'ではなく 'language'と' word'と呼ばれるという事実があります... – Ryan

+0

whileループはPHPです – kinakuta

答えて

3

あなたはこの

currentLanguage = data.language_id; 
currentWord = data.word_id; 
のような値にアクセスすることができます

{"language_id":"1","word_id":"1"} 

、あなたのJSONオブジェクトは次のようにされている場合は、あなたのPHPスクリプト

から戻ってあなたの変数に来て有効なJSONを持っていることを確認してください

例JsFiddle http://jsfiddle.net/NuS7Z/8/

YあなたのjSonが正しい形式であるかどうかを確認するには、http://jsonlint.com/を使用してください。

ポストリクエストでデータタイプ値として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データを取得することもできます。そのは、より組織化さそうすれ

<?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 
)); 

?> 

:に

$.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:getJsonはにあなたのJSを変更してみてくださいJSON

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

+0

ありがとう、私はそれを逃しました。しかし、それはまだ固定されたものを返すことはありません。 – Ramsel

+0

@SmoothAlmonds:私の更新された回答を参考リンクで見てください。私はあなたのjSonが有効ではないと思います。あなたはあなたのjSonの "Completed Successfully"が必要ではありません。 – Shyju

+0

修正されました。それは愚かな誤りでした。私は "エコー"接続に成功しました; "ステートメントは、接続後、そしてデータを返す前にphpファイル内にあるので、最初に返されていました。ありがとう。 – Ramsel

0

としてデータ型を持つAjax呼び出しの省略形ですコンテンツタイプを設定することを忘れないでください。

希望に役立ちます。

関連する問題