通过ajax将php生成的数组传递给另一个php文件

时间:2012-07-19 11:16:56

标签: php javascript jquery ajax json

我从oracle db(index.php)生成了一个php数组

    while ($row = oci_fetch_array ($stid, OCI_ASSOC + OCI_RETURN_NULLS)){

    $result[]=$row;

}

现在我必须将此数组传递给另一个php文件以进行其他处理。

 <script language="javascript" type="text/javascript">

  function sortme()
   {  
    var d=document.getElementById("div");
    var obj = <?php echo json_encode($result); ?>;
    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)
        {
        d.innerHTML=xmlhttp.responseText;
        }
     }
  xmlhttp.open("GET","getsorted.php?q=obj",true);
  xmlhttp.send();
   }

然后在php文件中获取sorted.php我需要这个双维数组&#34;结果&#34;回来并排序。所以我用它,(getsorted.php)

   <?php

    $q=$_GET["q"];
    $ans=json_decode(str_replace('\"','"',$q),true);
    var_dump($q);
    var_dump($ans);
   ?>

但是我无法找出任何东西。我无法取回阵列。 如果这是错误的方法,请提出正确的方法。

请发布代码。

非常感谢。

有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

当您必须传递URLEncoded JSON表示时,您正在传递字符串“obj”。替换:

xmlhttp.open("GET","getsorted.php?q=obj",true);

使用:

xmlhttp.open("GET","getsorted.php?q=" + encodeURIComponent(JSON.stringify(obj)),true);

你在做什么有点像这样:

PHP file  AnotherPHPFile
   |           ^  |
   |       ____|  |
   V      /       v
Javascript---(sorted result into HTML)   

如何简单地将getsorted.php文件包含在index.php中,并立即使用排序功能。您以这种方式保存网络请求..