使用ajax填充下拉列表的多日期输入选择

时间:2013-06-25 23:38:06

标签: php ajax forms

我已经阅读了一些来自这里的帖子和一些来自w3schools的帖子,但我似乎无法理解它。

基本上我有一个页面需要加载已在两个日期之间登录系统的用户列表。他们的老板将登录并使用他/她的组ID,日期和日期,生成一个下拉列表,显示在此期间登录的所有用户。

到目前为止,我已经设法能够将1个选择值传递给ajax调用的php,但是我无法设法找出如何“发布”多个输入选择。

    <!doctype html>

<html lang="en">
<head>
  <meta charset="utf-8" />
  <title>Operator Portal</title>
  <link rel="stylesheet" href="http://code.jquery.com/ui/1.10.1/themes/base/jquery-ui.css" />
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.1/jquery-ui.js"></script>
  <link rel="stylesheet" href="/resources/demos/style.css" />


  <style type="text/css">
  .smallfont
        {
        font-size: 9px;
        }
  </style>
  <script>
  $(function() {
    $('.datepicker').datepicker({ minDate: -21, maxDate: "+1D" });
  });
  </script>
</head>

<body>


<form action="results.php" method="post" target="_blank" class="ui-dialog-content" title="Owner Operator Web Portal">

      <?php

include 'joomla-auth.php';

$name = JFactory::getUser() ->username;


?>

 <input type="hidden" name="operatorID" value="<?php echo $name; ?>">


<p><strong>To show job details select the Car Number and Date Range below :</strong></p>
<table width="374" border="0" cellpadding="1">
  <tr>
    <td width="93"><strong>Car Number:</strong></td>
    <td width="271"><select name="CarNumber" size="1" id="CarNumber" type="text">


    </td>
  </tr>
  <tr>
    <td><strong>Date From: </strong></td>
    <td><input type="text" class="datepicker" name="DateFrom" id="DateFrom" />
      <span class="smallfont">(date format: mm/dd/yyyy)</span></td>
  </tr>
  <tr>
    <td><strong>Date To:</strong></td>
    <td>
      <input type="text" class="datepicker"  name="DateTo" id="DateTo" />
      <span class="smallfont">(date format: mm/dd/yyyy)</span></td>

  </tr>
  <tr>
    <td height="50">&nbsp;</td>
    <td><table width="100%" border="0" cellspacing="0" cellpadding="4">
      </table>
      <input name="Submit" type="submit" class="ui-buttonset" id="Submit" formaction="results.php" formmethod="POST" title="Submit" value="Submit">
<input name="Reset" type="reset" class="ui-buttonset" id="Reset" title="Clear All" value="Reset"></td>
  </tr>
</table>


</form>



</body>
</html>

我希望能够做的是添加另一个表单元素,该元素由前面提到的ajax调用填充

我认为它的意思是看起来像这样,但我无法让它发挥作用。

<html>
<head>
<script>
function showUser() {
    // Retrieve values from the selects
    var u = document.getElementByID('DateFrom').value;
    var g = document.getElementByID('DateTo').value;

    if (u=="" || g=="") {
        document.getElementById("txtHint").innerHTML="";
        return;
    }

    if (window.XMLHttpRequest) {
        xmlhttp=new XMLHttpRequest();
    } else {
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }

    xmlhttp.onreadystatechange=function() {
        if (xmlhttp.readyState==4 && xmlhttp.status==200) {
            document.getElementById("txtHint").innerHTML=xmlhttp.responseText;
        }
    }

    xmlhttp.open("GET","getuser.php?u="+u+"&g="+g,true);
    xmlhttp.send();
}
</script>
</head>
<body>

<form>
        <div id="u">

    <input type="text" class="datepicker" name="DateFrom" id="DateFrom" />
  <span class="smallfont">(date format: mm/dd/yyyy)</span></td>

</div>
<div id="g">
    <input type="text" class="datepicker"  name="DateTo" id="DateTo" />
  <span class="smallfont">(date format: mm/dd/yyyy)</span></td>

</div>

</form>
<br>
<div id="txtHint"><b>Person info will be listed here.</b></div>

</body>
</html>
我显然错过了一些非常明显的东西。现在我意识到我没有将隐藏的“输入”放入代码的第二部分,我正在努力获得2个输入工作,然后才尝试获得第3个。

感谢, 迈克尔

1 个答案:

答案 0 :(得分:1)

看起来你拼错了一些javascript

var u = document.getElementByID('DateFrom').value;
var g = document.getElementByID('DateTo').value;

&#39; ID&#39;应该是&#39; Id。&#39;小写D.尝试 - 这应该是为什么没有通过

的原因
var u = document.getElementById('DateFrom').value;
var g = document.getElementById('DateTo').value;

在调用函数时,还要检查DOM元素是否已构建并存在。将JS放在页面末尾会有所帮助。

帮助理解AJAX的另一件事是控制器(getuser.php)通过$ _GET接收其变量,正如您所指定的那样。因此,当您点击按钮时,您可以调用AJAX函数并将其变为变量(u & g),并且您的控制器会通过$_GET处理它们。

您的控制器会输出一个输出,这是在原始页面上收到的内容。因此,您可以使用可以正确解析的格式简单地使用尽可能多的变量回显字符串。例如:

你回显来自getuser.php的输出:

echo $var1.'|'.$var2.'|'.$var3;

然后您的原始页面可以进一步处理或者您需要:

data = xmlhttp.responseText.split ( "|" );
var1 = data[0];

因此,在使用AJAX时,您不需要任何传统的HTML表单。只需使用Javascript函数对变量进行编码即可。例如:

<div id="fancyButton" onclick="sampleAJAXfunction(var1,var2,var3)"></div>

我希望这有助于你原来的问题。