0

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

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

到目前为止,我已经设法将 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 个。

谢谢,迈克尔

4

1 回答 1

1

看起来你拼错了一些 javascript

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

“ID”应该是“Id”。小写 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>

我希望这对您的原始问题有所帮助。

于 2013-06-25T23:52:13.360 回答