如何通过php文件传递xmlhttp.open方法的数组?

时间:2013-12-30 08:34:36

标签: javascript php ajax

这是代码

<html>
  <head>
  </head>
  <body>
    <form method="get" >
      <input type="text" id="jk" name="jk" />
      <br />
      <input type="text" id="jk2" name="jk" />
      <br />
      <input type="text" id="jk3" name="jk3" style="width:100%; height:200px;" />
      <br />
      <input type="button" id="btn" name="btn" value="submit" onClick="showvalue()" />
    </form>
  </body>
</html>

这是我的java脚本

function showvalue() {
  var a=document.getElementById("jk").value;
  var b =document.getElementById("jk2").value;
  var arr = new Array(a,b);
  var xmlhttp=new XMLHttpRequest();
  xmlhttp.onreadystatechange=function()
  {     
    if (xmlhttp.readyState==4 && xmlhttp.status==200)     {       
      document.getElementById("jk3").value=xmlhttp.responseText;    
    }
  }
  xmlhttp.open("GET","testphp.php?q="+arr,true);
  xmlhttp.send(); 
}

这是我的testphp文件

<?php 
  $arr = array();
  $arr = $_REQUEST["q"];

  echo $arr[0];
?>

当我使用此代码结果不正确时。我需要显示发送的数组元素。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

修改以下行

使用Javascript:

  xmlhttp.open("GET","testphp.php?q="+arr,true)  
             to
  xmlhttp.open("GET","testphp.php?q="+ JSON.stringify(arr),true);

PHP:

 $arr = $_REQUEST["q"]; 
       to 
 $arr = $_REQUEST["q"];
 $arr = json_decode($arr);

干杯

答案 1 :(得分:0)

你不能像你尝试过的那样在JS中连接数组和字符串。 您可以使用循环创建查询字符串,然后将其添加到URL:

var query = '';
for (var i = 0; i < arr.length; i++) {
  if (i > 0) {
    query += '&';
  } // if
  query += 'q[' + i + ']=' + arr[i];
} // for
var url = 'testphp.php?' + query;