Ajax无法为动态PHP输出传递多个表单变量

Ajax无法为动态PHP输出传递多个表单变量,php,javascript,ajax,Php,Javascript,Ajax,我在传递多个变量时遇到问题。我从这里的基本示例开始:我的php代码需要报表类型,它存储在report&a startDate&a endDate中。当与原始样本和硬编码startDate&endDate保持一致时,脚本的性能非常好。然后我尝试添加Jason Moon的startDate和endDate日历,在传递变量时遇到问题。理想情况下,我还希望表单在编辑任何字段(包括日历)时自动更新数据输出,据我所知,Jason Moon的日历正在为startDate和endDate创建一个隐藏的文本字段。

我在传递多个变量时遇到问题。我从这里的基本示例开始:我的php代码需要报表类型,它存储在report&a startDate&a endDate中。当与原始样本和硬编码startDate&endDate保持一致时,脚本的性能非常好。然后我尝试添加Jason Moon的startDate和endDate日历,在传递变量时遇到问题。理想情况下,我还希望表单在编辑任何字段(包括日历)时自动更新数据输出,据我所知,Jason Moon的日历正在为startDate和endDate创建一个隐藏的文本字段。以下是我所拥有的:

    <html>
    <head>
    <script type="text/javascript"> 
    function showReport() 
    { 
        var report = document.getElementById('report').value;
        var startDate = document.getElementById('startDate').value;
        var endDate = document.getElementById('endDate').value;

          if (report=="" && startDate=="" && endDate=="")
          {
            document.getElementById("txtOutput").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("txtOutput").innerHTML=xmlhttp.responseText;
        }
      }
    xmlhttp.open("GET","report.php?report="+report+"&startDate="+startDate+"&        endDate="+endDate,true);
    xmlhttp.send();
    }
     </script>
     <script type="text/javascript" src="js/cal.js">

    /***********************************************
    * Jason's Date Input Calendar- By Jason Moon http://calendar.moonscript.com/dateinput.cfm
    * Script featured on and available at http://www.dynamicdrive.com
    * Keep this notice intact for use.
    ***********************************************/

    </script>
    </head>
    <body>

    <form>
    <select name="report" onChange="showReport()">
    <option value="">Type:</option>
    <option value="msales">Marketplace</option>
    <option value="lsales">Location</option>
    <option value="cos">COS</option>
    <option value="inventory">Inventory</option>
    </select>
    <br> StartDate:
    <script>DateInput('startDate', true, 'YYYY-MM-DD')</script>

    EndDate:
    <script>DateInput('endDate', true, 'YYYY-MM-DD')</script>
    </form>
    <br>
    <div id="txtOutput"><b>Report info will be listed here.</b></div>

    </body>
    </html>

您遇到的问题是,您试图从id中选择隐藏的输入,但函数DateInput的第一个参数是字段的名称

因此,您必须更改行:

var startDate = document.getElementById('startDate').value;
var endDate = document.getElementById('endDate').value;
作者:


如果您有多个同名字段,请小心,这可能不会返回您想要的字段,请注意[0],

那么,您遇到了什么问题?我想当我的下拉列表执行onchange时,我的函数不再启动,我尝试为startdate enddate输入硬编码值,但没有返回任何内容。我尝试了此操作,仍然不起作用,我很确定这与函数在更改时不再触发有关,或者至少不尝试执行这一部分:xmlhttp.openGET,report.php?report=+report+&startDate=+startDate+&endDate=+endDate,true;。。。这并不是说这不是这个问题的一部分,不能确定只是命名表单并直接调用id
var startDate = document.getElementsByName('startDate')[0].value;
var endDate = document.getElementsByName('endDate')[0].value;