Я видел много связанных примеров, но я все еще запутался. Я использую ajax (о котором я мало знаю), чтобы обновлять результаты файла каждые XXX секунд. Он отлично работает, если я передаю только одну переменную, но как лучше всего передать массив из php через него?
Структура проста:
show_results.php
<?php
include_once('modWhosonlineCustom.inc.php');
$document->addScript("http://code.jquery.com/jquery-latest.js");
$document->addScript("ajax.js");
$array_name = modWhosonlineCustom::getOnlineUserNames();//the array I need to pass to javascript variable
?>
<script>
var whosonline = '<?php echo "$array_name"; ?>';
</script>
<div id="results"></div>
Ajax-код, который будет содержать более одного параметра для загрузки URL:
ajax.js
$(document).ready(function() {
$("#results").load("response.php?array_name[param1]&array_name[param2]");
var refreshId = setInterval(function() {
$("#results").load("response.php?array_name[param1]&array_name[param2]&randval="+ Math.random());
}, 10000);
$.ajaxSetup({ cache: false });
});
И обратно на страницу ответов PHP, как я могу снова использовать параметры массива, переданные через URL?
response.php
<?php
$names = $_GET['array_name'];
foreach ($names as $name) {
//do something
Любые предложения действительно приветствуются, спасибо!
EDIT
Спасибо, ребята, я думаю, что теперь я верный путь, но проблема с передачей этого массива через URL в javascript остаётся. Или, может быть, я неправильно понимаю в файле обратного вызова php end. Я покажу вам, что изменилось:
show_results.php
...
<?php
$names = modWhosonlineCustom::getOnlineUserNames();
?>
<script>
var whosonline = '<?php echo "json_encode($names)"; ?>';
</script>
ajax.js
$(document).ready(function() {
$("#atendentes").load("response.php?names=" + whosonline);
var refreshId = setInterval(function() {
$("#atendentes").load("response.php?names=" + whosonline + "&randval="+ Math.random());
}, 10000);
$.ajaxSetup({ cache: false });
});
response.php
$users = $_GET['names'];
$users = json_decode($users);
echo "user: $users";
$names = $users;
foreach ($names as $name) {
...
Здесь, на другой стороне, я получаю: Предупреждение: неверный аргумент указан для foreach () в response.php в строке 33, и эхо пусто
Чего не хватает?