通过Ajax传递日期值

时间:2017-04-02 15:48:02

标签: php jquery ajax joomla

我有两个通过Ajax传递我的日历值。问题是,只有在第二次尝试选择日期后才传递日期值,并且它正在传递第一个尝试值!!

当前结果为例:

首次尝试时,我会选择: 2017-03-01

selectvalueds =''

第二次尝试我会选择: 2015-05-30

Selectvalueds ='2017-03-01'

重要: 由于一些计算,我必须首先将日历的值复制到#start,然后通过Ajax将#start传递给我的PHP代码。 使用Javascript:

$('#calendar').change(function() {
    $('#start').val($(this).val());
});
    $('#calendar’).change(function(){
            var selectvalueds = $('#start').val();
            Unit_id.html('<option value="">Loading...</option>');
            if (selectvalueds == '') 
            {Unit_id.html(initial_Unit_html);} 
            else 
            {
                $.ajax({
                    url: 'index.php',
                    data:'option=com_myapp&task=getUnitsHTML&dsvalue='+selectvalueds,
                    success: function(output) {
                        Unit_id.html(output);
                    },
                    error: function (xhr, ajaxOptions, thrownError) {
                        alert(xhr.status + ' ' + thrownError);
                    }
                });
            }
         });

PHP:

 public function getUnitsHTML() {
         $jinput = JFactory::getApplication()->input;
         $db = JFactory::getDbo();
         $query = $db->getQuery(true);           
         $sdate = date_create($jinput->get ('dsvalue'));   
         $mystartdate = date_format($sdate, "Y-m-d");         
         echo '<div>'.$mystartdate.'</div></br>';            
        }

1 个答案:

答案 0 :(得分:0)

您正在将2个更改事件绑定到#calendar。相反,尝试这样的事情:

function yourCalculation(start_val) {
    execute_whatever_you_want;
};
$('#calendar').change(function() {
    value = $(this).val()
    yourCalculation(value);

    var selectvalueds = value;
    Unit_id.html('<option value="">Loading...</option>');
    if (selectvalueds == '') {
       Unit_id.html(initial_Unit_html);
    } else {
       $.ajax({
              url: 'index.php',
              data:'option=com_myapp&task=getUnitsHTML&dsvalue='+selectvalueds,
              success: function(output) {
                   Unit_id.html(output);
              },
              error: function (xhr, ajaxOptions, thrownError) {
                   alert(xhr.status + ' ' + thrownError);
              }
       });
    }
 });

首先获取值,执行计算函数,然后添加Loading选项,检查值是否为空,如果不为空,则启动Ajax调用。