2013-10-15 5 views
1

Я пытаюсь запросить базу данных из файла php и вернуть результаты (userLOC каждой строки) к вызывающей функции JQuery.Echo/return array in php

Вызов Jquery:

$.post(url, data, function (data) 
    { 
     alert(data); 
    }) 

relavent PHP:

$sql = "Select * from location"; 
$result = mysql_query($sql); 
$stack = array(); 
while($row = mysql_fetch_array($result)) 
    { 
    array_push($stack, $row["userLOC"]); 
    } 
    return $stack; 

Проблема заключается в том, что я не могу вернуть его правильно, если я "эхо $ стопка" это не работает это говорит Im пытаясь преобразовать массив в строку. Если я «echo $ stack [0]», он даст мне первый результат в массиве правильно, поэтому я знаю, что значения хранятся правильно (как и $ stack [1] и т. Д.), Но это возвращает только одно значение обратно , И если я «возвращу $ стек», как изображено, ничего не предупреждается, потому что ничего не вторит. Как я могу получить весь массив назад, чтобы я мог перебирать и использовать их на стороне jquery?

ответ

3

В PHP

$foo = array(); 
echo $foo; 

произведет символьной строки Array в качестве вывода.

Вам необходимо преобразовать массив в строку. Так как вы имеете дело с целью Javascript, использовать JSON в качестве идеального средства выполнения так:

$foo = array('a', 'b', 'c', 'd', 'e'); 
echo json_encode($foo); 

Затем в коде JS:

$.get(...., function (data) { 
    alert(data[1]); // spits out 'b' 
}); 

Только не забудьте сказать JQuery, что вы ожидаете Выход JSON.

+0

Спасибо, что довольно много работал, если я просто предупреждение (данные) теперь я вижу содержимое всего массива, т.е. «[» а»,„б“,„в“ ] ", поэтому данные поступают туда, но если я попытаюсь ссылаться на один из элементов, таких как alert (data [0]), он дает" [", который является персонажем. – DasBeasto

+0

, тогда его обрабатывают как строку, и вам нужно сообщить jquery, что вы возвращаете json, например. '$ .get (url, data, function, 'json');', в соответствии с документами: http://api.jquery.com/jQuery.get/ –

+0

. Большое спасибо – DasBeasto

0

echo json_encode($stack); может помочь вам

на Jquery использования на стороне jQuery.parseJSON()

0

Вы должны преобразовать массив в объект JSON как это: return json_encode($stack);

1

Вам нужно обернуть (сериализации) данные таким образом, что можно транспортировать к клиенту через HTTP и используется для получения исходных данных , Обычными форматами контейнеров являются XML и JSON. JSON хорошо подходит для использования в JavaScript, поэтому используйте функцию PHP json_encode() и эхо-результат.

0

Просто преобразовать массив его в объект JSON и вернуть его обратно в JavaScript:

return json_encode($stack); 
1

Youll хотите использовать JSON!

сторона клиента:

jQuery.post(url, data, function(data) { 
    //Data is already converted from JSON 
}, "json"); 

сторона сервера:

return json_encode($stack); 

Explanation

Надеется, что это помогает!

0

Как уже говорили другие, вы можете обернуть вывод, используя что-то вроде: JSON

echo json_encode($stack); 

Однако, если вы не ищете выход со сложностью JSON форматирования, вы могли бы просто использовать implode() для вывода через запятую список:

echo implode(',',$stack);