【问题标题】:jQuery UI Datepicker and execute Ajax after selecting a datejQuery UI Datepicker 并在选择日期后执行 Ajax
【发布时间】:2014-12-02 15:07:30
【问题描述】:

我不确定这是否可能以及如何处理它 - 在 datepicker 中选择日期时执行 Ajax。我没有从控制台中的 Ajax 部分收到任何错误。在“按比例分配”的 div ID 中,我得到的是“成功”而不是按比例分配的订阅值。我需要使用 JSON 从 PHP 文件中获取返回值吗?

目标是根据所选日期和所选月份剩余天数按比例分配订阅价格。

当前代码看起来像并且正在计算所选月份的剩余天数:

<script>
jQuery(document).ready(function() {
     jQuery("#dataStart").datepicker({

        minDate: '+2d',
        changeMonth: true,
        changeYear: true,
        dateFormat: 'mm/dd/yy',
        onSelect: function(date){
            var dates = date.split('/');
            var lastDate = new Date(dates[2], dates[0], 0);
            var y = lastDate.getFullYear(), m = lastDate.getMonth(), d = lastDate.getDate();
            m = ('0'+ (m+1)).slice(-2);

            jQuery('#dataEnd').val(m+'/'+d+'/'+y);
            var start = jQuery('#dataStart').datepicker('getDate');
            jQuery('#dataEnd').datepicker({dateFormat: 'mm/dd/yy'}).datepicker('setDate', m+'/'+d+'/'+y);
            var end = jQuery('#dataEnd').datepicker('getDate');
            var days   = ((end - start)/1000/60/60/24)+1;

            jQuery('#calculated').text(days);      

              jQuery.ajax({
                 url:"prorated.php",
                 type: "POST",
                 data: {prorated_days: days, prorated_subscription: 25, prorated_package: "basic"},
                 success:function(data, result){
                   $("#prorated").html(result);
                 }
              });

        }
    });
});
</script>
<label for="dataStart">Start Date:</label>
<input type="text" style="width: 88px;" class="datepicker" id="dataStart" size="10" name="dataStart" data-role="date" />
<label for="dataEnd">End Date:</label>
<input type="text" style="width: 88px;" class="end_date" id="dataEnd" size="10" name="dataEnd" value="" readonly />

【问题讨论】:

  • 请包含您尝试执行的 Ajax 代码。
  • @JeffWatkins 已更新。另外,为什么在主题时投反对票?
  • 您在“按比例分配”的 div 中获得了“成功”,因为您将 html 设置为成功函数的 textStatus 值(您称之为 result)。你可能想要html(data)
  • @jacktheknife,恐怕不是我!

标签: jquery ajax jquery-ui datepicker


【解决方案1】:

jQuery ajax 在传递给成功函数的第一个参数中传递 ajax 响应的主体。您正在使用的第二个参数是 textStatus。由于您的 ajax 调用成功,因此 textStatus 为“成功”。在你的 ajax 成功函数需要是这样的:

$('#prorated").html(data);

【讨论】:

  • 太棒了!有用。你能告诉我如何在 Ajax 返回而不是 HTML 中处理 JSON 数据吗?
猜你喜欢
  • 2010-11-29
  • 1970-01-01
  • 2012-03-17
  • 2019-11-24
  • 2015-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-08-08
相关资源
最近更新 更多