2012-04-10 67 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數組被呼應,但它不是最終在data,因爲currentLanguagecurrentWord沒有被popu遲來。這是異步問題嗎?或者是其他東西?

+0

爲什麼在'while'循環中?你是否期待不止一個結果?如果是這樣,那是你的問題;否則,就把它變成'if'。然後有一個事實,他們被稱爲'language_id'和'word_id',而不是'language'和'word' ... – Ryan 2012-04-10 03:16:45

+0

while循環是php – kinakuta 2012-04-10 03:17:47

回答

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爲您的POST請求的數據類型值將確保效應初探是回來爲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/

+0

謝謝,我錯過了。但是,它仍然沒有返回任何固定的東西。 – Ramsel 2012-04-10 03:24:36

+0

@SmoothAlmonds:通過示例鏈接查看我更新的答案。我猜你的jSon無效。你不需要在你的jSon中「完成成功」。 – Shyju 2012-04-10 03:37:35

+0

固定。這是一個愚蠢的錯誤。我有一個「回聲」連接成功「;」聲明在連接後的php文件中,並在返回數據之前,以便首先返回。謝謝。 – Ramsel 2012-04-10 03:54:17

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

?> 

這樣它更有條理並且不要忘記設置內容類型。

希望有所幫助。