2011-04-20 32 views
0

我想弄清楚如何使用jQuery的.ajax()來查詢MySQL表並將結果作爲數組返回。這是我到目前爲止有:php5和jQuery ajax返回數組

的jQuery:

$.ajax({url: 'procedures?', 
    data: {Action: 'GetSuggestList' }, 
    dataType: "json", 
    success: function(oData){ 
     if(oData.errormsg != null) 
       alert('failed: ' + oData.errormsg); 
     alert(oData.results); 
}}); 

PHP代碼(在假設我mysql_connect()mysql_select_db()是有效的):

$pcAction = isset($_REQUEST['Action']) ? $_REQUEST['Action'] : "" ; 
if($pcAction=='GetSuggestList'){ 
    $tb_name = 'suggestions'; 
    echo json_encode(DoGetSuggestList($tb_name)) ; 
} 

function DoGetSuggestList($ptb_name){ 
    $qry_suggest = mysql_query('SELECT * FROM ' . $ptb_name . ' WHERE Active ORDER BY updated DESC'); 
    $rsl_suggest = mysql_fetch_array($qry_suggest); 
    $jSONreturn = array("errormsg" => $jSONerror, "results" => $rsl_suggest); 

    return $jSONreturn; 
}; 

我不知道還有什麼需要在我的AJAX成功函數,以遍歷數組中的每個結果行...

+2

如果你想要所有的結果,你不應該在while循環中調用mysql_fetch_array嗎?你現在回來的json是什麼樣的? (如果你安裝了firebug,你可以使用console.log(oData)) – machinemessiah 2011-04-20 16:15:57

+0

我會回顯'$ pcAction' ...表名'$ tb_name'可能沒有設置 – colinmarc 2011-04-20 16:20:04

+0

@machinemessiah - 我認爲你說得對mysql_fetch_array在一個循環中,因爲console.log(oData)僅返回1條記錄的結果 – sadmicrowave 2011-04-20 16:23:57

回答

3

我認爲你需要從查詢中得到結果傾倒在他們之前json_encode()聯想陣列。

while(...) { 
    $a_results[] = array('s_column' => $row['column']); 
} 

return json_encode(array('errormsg' => $jSONerror, 'results' => $a_results));