如何将多个变量从ajax传递给php?

时间:2011-12-08 20:53:21

标签: php html ajax

我正在尝试将两个变量传递给这个AJAX函数,我该怎么做呢?

function showInfo(str)
{
if (str=="")
  {
  document.getElementById("txt").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("txt").innerHTML=xmlhttp.responseText;
    }
  }

xmlhttp.open("GET","query1test.php?"+str,true);
xmlhttp.send();

我想要传递给AJAX请求的是lname和年份?有没有办法解决这个问题?

<input type="text" name="lname" Onchange="showUser(this.value)"> <br>
<select name="year" >
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
</select> <br>
<input type="submit" value="submit">

感谢您的帮助,我还是初学者。

2 个答案:

答案 0 :(得分:5)

我本来会使用JQuery。如果您使用不同的浏览器会更容易。 Ajax部分(获取请求)由一行完成,您可以使用选择器来查找所需的值。

在这段代码中,我为名为“lname”的输入设置了onchange事件。触发onchange事件时,我从name字段获取值,从select元素获取year。然后我向query1test.php发送获取请求。

$(document).ready(function() {
    $('input[name="lname"]').change(function() {
        var name = $('input[name="lname"]').val();
        var year = $('select[name="year"]').val();
        $.get('query1test.php?name='+name+'&year='+year);
    });
});

在PHP脚本(query1test.php)中,您可以从$ _GET中检索值。例如:

<?php

$name = $_GET['name'];
$year = $_GET['year'];

echo $name . ' - ' . $year;

您可能希望对PHP脚本返回的数据执行某些操作。一个例子是:

$.get('query1test.php?name='+name+'&year='+year, function(data) {
    alert(data);
});

答案 1 :(得分:0)

我不知道你传递的内容是什么,但是根据事物的外观,它应该是你的查询字符串 - 这是你问题的答案。所以在我的回复中,我将用没有任何验证的情况替换str:

xmlhttp.open("GET","query1test.php?lname="+document.getElementById("lname").value+"&year="+document.getElementById("year").value,true);

此外,我会为您的文字输入添加一个lname的id,并为您的选择提供一年的ID。

<input type="text" id="lname" name="lname" Onchange="showUser(this.value)"> <br>
<select id="year" name="year" >
    <option value="2011">2011</option>
    <option value="2010">2010</option>
    <option value="2009">2009</option>
</select> <br>
<input type="submit" value="submit">

这会将您的请求作为$ _GET vars传递。

为什么你不想为此使用jQuery?