У меня есть поле ввода, которое я хочу заполнить кучей возможных источников, но мне нужно захватить эти источники из нескольких разных областей: файл на моем сервере и некоторые вещи, которые уже находятся в jQuery.
Поле ввода будет отображаться внутри iFrame, поэтому у меня есть.php, который будет отображать некоторые html, когда он вызывается в качестве источника.
<?php
$array = array('Louisville, KY', 'Denver, CO');
echo "
<html>
<head>
<link rel='stylesheet' href='//code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css'>
<script src='//code.jquery.com/jquery-1.10.2.js'></script>
<script src='//code.jquery.com/ui/1.10.4/jquery-ui.js'></script>
<link rel='stylesheet' href='/resources/demos/style.css'>
<script>
$(function() {
var availableTags = [
'Boston, MA',
'New York City, NY',
'Los Angelos, CA'
];
availableTags = $.merge(availableTags, ".$array.");
$( '#tags' ).autocomplete({
source: availableTags
});
});
</script>
</head>
<body>
Select a voting option.
<br>
<span id='options'>
<form method='post' action='/creations/tools/poll/pollstorage.php' target='mainframe'>
<input id='tags' name='score'/>
<input type='submit' value='Vote'/>
</form>
<br>
</span>
</body>
</html>
"
?>
В jQuery, что я буду эхом в iframe, вы можете увидеть, что я пытаюсь объединить существующий массив jQuery и вывод массива PHP: availableTags = $.merge(availableTags, ".$array.");
, Я попробовал, и ни один из jQuery не работает.
Что я здесь делаю неправильно? Как мне следует объединить массив PHP и массив jQuery?
Использовать json_encode():
$.merge(availableTags, ". json_encode($array).");
var php_array = [<?php echo '"'.implode('","', $array).'"' ?>];
availableTags = $.merge(availableTags,php_array );
Вы можете преобразовать php-массив в json файл и использовать его в java-Script или jquery. использовать php json_encode
Я считаю, что лучшим решением является использование json.
На PHP создайте страницу, чем выводите нужные данные json:
page data.json
<?php
$obj['jsArray']= array('Boston, MA','New York City, NY','Los Angelos, CA');
echo json_encode($obj);
?>
На странице Html с помощью getJSON загрузите свою страницу с помощью json-данных (я использую псевдо-код, который не тестировался):
$.getJSON( "data.json", function( data ) {
var availableTags = data.jsArray
});
или, если у вас есть доступныеТаги и будут добавлены новые данные:
$.getJSON( "data.json", function( data ) {
availableTags.push(data.jsArray)
});