【问题标题】:Javascript Array from PHP来自 PHP 的 Javascript 数组
【发布时间】:2013-12-21 15:46:39
【问题描述】:

要更新 Javascript 数组 (eventDates) 我想通过 Ajax/PHP 获取内容 - 遗憾的是我无法使用它。任何人都知道 PHP 输出 (data) 的外观如何,我可以使用它吗?

      $.ajax({
        type: "GET",
        url: "_ajax_registration.php?type=getDate&project="+val,
        data: "data",
        success: function(data){
            var eventDates = data;
        }
      });

      /*
      var eventDates = [{date: new Date(2014, 1-1, 28)}},
                {date: new Date(2014, 1-1, 18)},
                {date: new Date(2014, 6-1, 18)},];
      */


      function showEventDates(date) {
        for (var i = 0; i < eventDates.length; i++) {
            if (date.getTime() == eventDates[i].date.getTime()) {
                return [true, ''];
            }
        }
        return [false, ''];
      }

      $("#datepicker").datepicker("destroy");       
      $( "#datepicker" ).datepicker({       
        beforeShowDay: showEventDates

      }); 
      $( "#datepicker" ).datepicker( "refresh" );   

【问题讨论】:

    标签: javascript php jquery ajax datepicker


    【解决方案1】:

    第一个对象后面有一个多余的括号,最后一个对象有一个多余的逗号。试试这个:

     var eventDates = [{date: new Date(2014, 1-1, 28)},
                {date: new Date(2014, 1-1, 18)},
                {date: new Date(2014, 6-1, 18)}];
    

    【讨论】:

    • 还需要去掉最后一个, 才能让 IE 工作。
    • 对不起,彼得,我在回答时走错了行。感谢您的姓名和更正。
    【解决方案2】:

    你需要从_ajax_registration.phpecho json_encode($someArray)

    此外,您将无法在 ajax 回调之外访问 eventDates。你需要这样做:

    function showEventDates(date) {
      for (var i = 0; i < eventDates.length; i++) {
        if (date.getTime() == eventDates[i].date.getTime()) {
          return [true, ''];
        }
      }
      return [false, ''];
    }
    
    $.ajax({
      type: "GET",
      url: "_ajax_registration.php?type=getDate&project="+val,
      success: function(data){
        var eventDates = data;
        $("#datepicker").datepicker("destroy");       
        $( "#datepicker" ).datepicker({       
          beforeShowDay: showEventDates
        }); 
        $( "#datepicker" ).datepicker( "refresh" );
      }
    });
    

    【讨论】:

    • 感谢您的快速和良好的遮阳篷,遗憾的是我不知道 $someArray 应该如何让它工作;(
    • 如果你注释掉你的静态eventDates,你会得到预期的结果吗?
    • 效果很好。我刚刚添加了一个警报以查看结果,注释代码我得到“[object Object],[object Object]”和数据中的值“[”date:1387926000“,”date:1387926000“]” - 我的PHP 是这样的: $myArray[] = 'date: '.strtotime('25-12-2013'); echo json_encode($myArray);
    • 你需要像$myArray[] = array('date' =&gt; strtotime('25-12-2013'));一样做
    • 你不想尝试构建一个看起来像 json 的字符串,你想使用原生数据类型。
    【解决方案3】:

    我喜欢的是,在 php 方面,拿你的数组和

    echo json_encode($myArray));
    

    然后,在 jquery 中你可以:

    $.GetJson('ajax_reg.php', { type : 'getDate', project': val }, function(data) {
        eventDates = date;
    });
    

    【讨论】:

    • 感谢您的快速遮阳篷,遗憾的是我不知道 $myArray 应该是什么样子 ;( $myArray[] = strtotime('18-01-2014')*1000; 确实有效
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 2021-02-10
    • 1970-01-01
    相关资源
    最近更新 更多