如何将数组php(从xml)转换为javascript以禁用datepicker中的日期(beforeShowDay)?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (201)

通过get联系到另一个网站并获取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 ($tour->idmodelo == $cifraexcursion) {

     echo "<br>Date ".$tour->date;

然后需要将这些日期添加到javascript var中以在datepicker中使用。以下工作完美,但我无法使用数组$ tour-> 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 ".$tour->date;

但是,如果我这样做试图保存为javascript数组它可以工作,但我只得到四个日期的最后日期。

    var array=["<?php echo ($tour->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>
提问于
用户回答回答于

下面是一些代码将XML解析为数组的原始js示例.

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.log(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.log(myArray[i]);
  document.write(myArray[i] + "<br/>");
}

热门问答

请问bugly上报的服务器是在哪?如果要发行海外版本,能把上报服务器调成海外吗?

扩展能力之云调用,小程序端出错:[tcb-js-sdk]参数错误:非法的应用标识?

software微软、谷歌、腾讯、阿里、百度……
推荐
您好,appSign必须是小程序的appid,appSecret的两个字段必须是在云开发控制台-安全来源里配置过的。 image.png ... 展开详请

serverless db 如何管理?

Richel码农
推荐
1.支持pg_dump,psql工具进行数据导入和导出。 2.本地CLI,可以使用postgresql的客户端psql,也可以使用dbeavr,navicate,pgadmin等工具访问。 3.支持操作DB ,要自己写逻辑 ... 展开详请

游戏联机对战引擎实时服务器怎么请求外部接口?

您好,实时服务器支持http访问内网,需要在实时服务器内下载request模块,同时把node_modules文件夹压缩打包上传发布实时服务器。

对象存储, 版本控制,没有提供对象的历史版本列表的查询API吗?

安卓APP使用免费版加固后,在Android11系统上运行闪退,是什么原因?

hello,目前已经适配了Android R Beta1,预计这周内上线移动应用安全在线版,请留意日志更新

所属标签

扫码关注云+社区

领取腾讯云代金券