Я связываюсь с другим веб-сайтом, получая и получаю результат xml для интерпретации.
Обращаюсь так:
$v= file_get_contents(
"https://www.v.com/fechasexcursion.php?
agent=M&password=s&fecha1=2018-10-05&fecha2=2018-12-
31&idmodelo=$cifraexcursion");
Затем я анализирую информацию, чтобы получить даты из xml, чтобы отключить эти даты в datepicker:
$cifraexcursion = 9;
$xml = new SimpleXMLElement($v);
foreach ($xml->excursion as $tour) {
if ($nameoftour->idmodelo == $cifraexcursion) {
echo "<br>Date ".$nameoftour->date;
Затем мне нужно добавить эти даты в переменную javascript для использования в datepicker. Ниже работает отлично, но я не могу использовать массив $ nameoftour-> date
<script>
var array = ["2018-10-14","2018-10-15","2018-10-16"];
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ array.indexOf(string) == -1 ]
}
});
(function() {
$.datepicker.setDefaults({
regional: 'en',
buttonImage: "/images/calendar_blue.png",
buttonImageOnly: true,
firstDay: 1,
})
})();
</script>
Обновлено: Это распечатает 4 даты:
echo "<br>Date ".$nameoftour->date;
Однако, если я сделаю это, пытаясь сохранить как массив javascript, он работает, но я получаю только последнюю дату из четырех дат.
var array=["<?php echo ($nameoftour->date);?>",];
Обновлено: У меня все заработало:
$xml = new SimpleXMLElement($viajes);
$tmpArrayFechas = [];
foreach ($xml->excursion as $excursion) {
if ($excursion->idmodelo == $cifraexcursion) {
$tmpArrayFechas[] = $excursion->fecha;
}
}
$tmpArrayFechas = implode(',', $tmpArrayFechas);
?>
<input type = "hidden" id = "plazasDisponibles"
name = "plazasDisponibles"
value = "<?php echo $tmpArrayFechas; ?>">
<script>
var arrayDiasDisponibles =
document.querySelector("#plazasDisponibles").value.split(',');
$('input').datepicker({
beforeShowDay: function(date){
var string = jQuery.datepicker.formatDate('yy-mm-dd', date);
return [ arrayDiasDisponibles.indexOf(string) !== -1 ]
}
});
(function() {
$.datepicker.setDefaults({
regional: 'en',
buttonImage: "/images/calendar_blue.png",
buttonImageOnly: true,
firstDay: 1,
})
})();
</script>
Чтобы получить дополнительную помощь по этому поводу: отредактируйте свой пост и добавьте тег php, чтобы гуру PHP увидели ваш вопрос; Кроме того, я думаю, было бы полезно, если бы вы предоставили PHP-код, который ведет к вашей переменной $tour. Наконец, если вы можете, дайте представление о том, как вы хотите передавать данные с серверного PHP на клиентский JS: записываете ли вы данные непосредственно в выходной файл HTML / JS, загруженный со страницей, есть ли у вас конечная точка, которую нужно достичь с помощью AJAX, выполните у вас есть поток сокетов или даже почтовый голубь, который вы хотите использовать, и т. д.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Поскольку вы, похоже, используете jQuery, вы можете использовать $ .parseXML, а затем вы можете обернуть его в jQuery и .find('date'). Что-то вроде этого должно получиться:
var output = Array.from( // if you need an array (and not just iterable object)
$( // wrap the XMLDocument in jQuery to parse it with .find
$.parseXML(rawXmlData) // parse the XML into an XMLDocument
)
.find('date') // find the nodes we need
.map(function (index, element) { // map the tags/nodes
return $(element).text(); // retrieve only the content
})
);
Боюсь, я неправильно задал вопрос. Спасибо, в любом случае
Вот необработанный пример js некоторого кода, анализирующего xml в массив ...
var myXml = "<root><tour><date>2018-10-14</date></tour><tour><date>2018-10-15</date></tour><tour><date>2018-10-18</date></tour></root>";
if (window.DOMParser)
{
parser = new DOMParser();
console.info(parser);
xmlDoc = parser.parseFromString(myXml, "text/xml");
}
else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(myXml);
}
var elementsCollection = xmlDoc.getElementsByTagName("date");
var myArray = [];
for(var i = 0; i < elementsCollection.length; i++) {
myArray.push(elementsCollection[i].innerHTML);
};
for(i = 0; i < myArray.length; i++)
{
console.info(myArray[i]);
document.write(myArray[i] + "<br/>");
}Мне очень помог следующий пост: Разбирать XML с помощью JavaScript
Также обратите внимание, что парсер dom не будет очень хорошо разбирать ваш xml, если у вас нет единственного корневого элемента, поэтому вы заметите, что в моем примере я добавил элемент.
Это работает, спасибо, но не знаю, как изменить содержимое var myXml на $ tour-> date
Нет, корневого элемента нет, это не мой xml, я получаю из другой сети.
Я использую информацию xml следующим образом: $ tour-> date