将PHP变量直接合并到AJAX脚本中,无需表单提交

时间:2012-11-02 03:40:14

标签: php ajax

我是一名相对新手并且未能成功解决AJAX编码问题,因此我认为我会将此提交给您的专家帮助:

当前设置:(表单提交给AJAX脚本的日期值)

通过onchange事件从主页面上的下拉表单提交选定值(日期),该事件在同一页面上调用Ajax脚本,该脚本又将值传递给单独的PHP文件(getuser.php) )。 Getuser.php获取此日期值以从表中显示它的MySQL数据库返回信息。 getuser.php中的表随后作为JavaScript“滑翔机”的一部分显示在主页上的div标签(tab1)中。这在目前的形式下工作得很好,但这不是我最终想要完成的事情。

所需的设置:(日期值从主页加载时的预定义PHP变量传递到Ajax脚本,而不是从表单传递)

在加载主页面时,所需的日期值已分配给PHP变量($ mydate),因此不需要单独选择日期或传递此选定的表单日期。所有需要做的就是自动将PHP变量$ mydate传递给页面加载的AJAX脚本,该脚本应将此值合并到URL中并自动将其发送到getuser.php(在主页加载时),而不必经过用户定义的表单选择。

这是主页上的当前AJAX脚本(通过表单提交方法可以正常工作):

<script type="text/JavaScript">
function showUser(str)
{
if (str=="")
  {
  document.getElementById("tab1").innerHTML="";
  return;
  }
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("tab1").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getuser.php?q="+str,true);
xmlhttp.send();
}
</script>

这是主页面上当前选择日期并将其传递给AJAX脚本的当前表单..:

<form>

<SELECT NAME="" onchange="showUser(this.value)">

<option value="">Select a date:</option>

<option value="2012-09-26">2012-09-26</option>

<option value="2012-09-25">2012-09-25</option>

<option value="2012-09-07">2012-09-07</option>

<option value="2012-09-08">2012-09-08</option>

<option value="2012-08-01">2012-08-01</option>

<option value="2012-08-04">2012-08-04</option>

</SELECT>

</form>

..但是当前日期已经在php变量$ mydate的主页加载中设置,因此不需要表单。

辅助页面getuser.php获取传递的URL的值($ q = $ _ GET [“q”];)并使用它来显示表中MySQL数据库的信息。此表以单独的JavaScript“滑翔机”的形式显示在主页上的div标签(选项卡1)中:

<div id="glider"><div class="controls">
<a href="#tab1">Tab 1</a> | 
<a href="#tab2">Tab 2</a> |
<a href="#tab3">Tab 3</a> |
<a href="#tab4">Tab 4</a></div>
<div class="scroller"><div class="content">
<div class="section" id="tab1">Tab 1</div>
<div class="section" id="tab2">Tab 2</div>
<div class="section" id="tab3"><img src=" "  
/></div>
<div class="section" id="tab4">Tab 4</div>
</div></div></div>

<script type="text/JavaScript" charset="utf-8">
        new Glider('glider');
</script>

我在AJAX脚本代码上尝试了多种变体,试图将$ mydate直接放入绕过表单的AJAX脚本中,并使其自动运行,但没有任何效果。对此可能有一个简单的答案,它可能只是语法上的。

1 个答案:

答案 0 :(得分:1)

为什么不在PHP文件中尝试这样的东西

<script type="text/JavaScript">
showuser("<?php echo $mydate ?>");
</script>