【问题标题】:sending already used variable via ajax通过 ajax 发送已使用的变量
【发布时间】:2017-03-24 11:32:05
【问题描述】:

我在页面上使用 jquery datepicker。在 datepicker 旁边,我有一个部分将显示 datepicker 的 mouseenter 上的事件。我想出了一种方法将日期放入本节的标题中。我遇到的问题是将该变量传递到将在 mouseenter 上显示的 php 页面。

下面是显示日期选择器和事件的页面:

<div id=events>
       <div id=eventcontent>
       </div>
           </div> 

           <div id=eventsheading>
           <div id=headingcontent>
           </div>
           </div>

      <div id = "datepicker">
      </div> 

这是我用来用日期填充标题的 Jquery(有效),将相同的变量发送到 events.php(无效),并在内容 div 中显示 events.php(有效当我突出显示日期时,会显示你好):

$(document).on('mouseenter', '.ui-datepicker-calendar .ui-state-hover', function(e){

    var daynum1  =   $(this).text();
    var month1   =   $('.ui-datepicker-month').text();
    var year1    =   $('.ui-datepicker-year').text();

    var Date = daynum1 + " " + month1 + " " + year1;
    $('#headingcontent').html(Date);

    //ajax call with date information
    var request = $.ajax({
    url: "events.php",
    type: "POST",
        data: {Date: Date},
        dataType: "html"
    });

   $.ajax({
  url: "events.php",
  cache: false,
  success: function(html){
    $("#eventcontent").append(html);
  }
});
});

下面是events.php:

if(isset($_POST['Date']))
{
    $date = $_POST['Date'];

echo <<<_END

<p>$date</p>

_END;
}
else
{
echo <<<_END


<p>hello!</p>

_END;

}

一旦我开始工作,事件 PHP 将被更改为从 mysql 中选择事件。

为了澄清,我遇到的问题是使用此代码通过 ajax 发送可变日期:

//ajax call with date information
        var request = $.ajax({
        url: "events.php",
        type: "POST",
            data: {Date: Date},
            dataType: "html"
        });

我似乎找不到任何解释 data: {...} 应该如何使用的地方,我猜这是我的问题。

对不起,如果代码完全错误,我对学习这一切很陌生,感谢您的帮助。

【问题讨论】:

  • 首先:不要使用与内置对象冲突的变量名 - JS 已经有一个Date 对象,所以使用它作为变量名是自找麻烦。 (是的,仅在所示代码中它是一个局部变量 - 但还是不要这样做。)
  • 其次 - 你为什么要在这里发出 两个 AJAX 请求?您只发送第一个数据 - 所以在第二个中,该值当然不可用。只需发出 一个 请求,将数据发送到服务器,然后在页面中显示响应。
  • @CBroe 关于名字的好点,我会改变它。我对这一切都很陌生,是否可以进一步解释如何将第二个请求作为请求?
  • 你不需要两个请求。发出一个发送数据的 POST 请求 - 并为该请求指定一个成功回调。
  • 首先尝试了解请求和响应的范围,当您使​​用 Date 使用发布数据发出第一个请求时,它仅适用于您的第一个请求,因此当您尝试执行第二个请求时,它将进入其他部分,因为日期是在第一个请求中发布的,希望这对你有意义

标签: php jquery ajax datepicker


【解决方案1】:

您不得使用与@CBroe 所说的内置对象冲突的变量名。 就这样休息

   var myDate = daynum1 + " " + month1 + " " + year1;
    $('#headingcontent').html(myDate);

   $.ajax({
    url: "events.php",
    type: "POST",
        data: {myDate: myDate},
        dataType: "html",
        success: function(html){
    $("#eventcontent").empty();  
    $("#eventcontent").append(html);
  }
    });

不需要第二次 ajax 调用

【讨论】:

  • 感谢您。到目前为止,我的知识非常有限,但我使用第二个 ajax 调用来告诉#eventcontent 在其中使用新更新的 events.php。这是 .append 实现的吗?我知道这篇文章将 coorect 信息发送到 event.php,但它是否会将新的 events.php 加载到 eventcontent 中?
  • @josh 在这种情况下,您必须替换该 div 中所有以前的事件数据才能使用 html()。查看我更新的帖子(如果我清楚地了解您的要求)
猜你喜欢
  • 1970-01-01
  • 2015-08-17
  • 2017-11-01
  • 2014-01-30
  • 2018-01-06
  • 1970-01-01
  • 2012-07-26
  • 1970-01-01
  • 2019-06-09
相关资源
最近更新 更多