#php #jquery #mysql #ajax #json
#php #jquery #mysql #ajax #json
Вопрос:
Я пытаюсь выяснить, как использовать jQuery .ajax()
для запроса таблицы MySQL и возврата результатов в виде массива. Это то, что у меня есть до сих пор:
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, чтобы выполнять итерации по каждой результирующей строке в массиве…
Комментарии:
1. Если вам нужны все результаты, разве у вас не должен быть вызов mysql_fetch_array в цикле while? Как теперь выглядит json, который вы получаете обратно? (вы можете использовать console.log (OData), если у вас установлен firebug)
2. Я бы повторил
$pcAction
… имя таблицы$tb_name
может быть не задано3. @machinemessiah — Я думаю, вы правы насчет наличия mysql_fetch_array в цикле, потому что console.log (OData) возвращает результаты только для 1 записи
Ответ №1:
Я думаю, вам нужно, чтобы результаты запроса были сброшены в ассоциированный массив перед json_encode()
ними.
while( ... ) {
$a_results[] = array( 's_column' => $row['column'] );
}
return json_encode( array('errormsg' => $jSONerror, 'results' => $a_results) );