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

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

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

通过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>
提问于
用户回答回答于

既然你似乎在使用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
  })
);

热门问答

怎样实现PDF文件在线浏览?

幻象丛林RESTful 服务开发者
推荐
一般浏览器自带pdf浏览,比如谷歌浏览器,你打开pdf结尾的文件就是浏览界面。 存放在cos中的pdf文件打开如果是直接下载的话,需要设置静态网站,才能正常访问存储桶中的文件,而不是直接下载。 开启静态网站配置后,您需要使用静态网站域名访问 COS 源站才能生效,如果使用 COS...... 展开详请

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

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

mysql 1h1g能带动多大的数据?

学生路人
推荐
您好,MySQL的处理速度主要看内存的缓存空间大小,缓存空间是否够用主要看业务热数据,而业务热数据是与业务访问相关的,腾讯云MySQL的存储引擎是固定的,都是innodb存储引擎,所以处理器这里不用考虑太多,主要关注innodb_buffer_pool_size是否够用,建议您先...... 展开详请

serverless db 如何管理?

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

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

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

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

所属标签

扫码关注云+社区

领取腾讯云代金券