打印ajax响应,即print_r

时间:2014-03-09 10:31:37

标签: php jquery ajax

如果你可以编辑标题,请做!

修订版!!! 这是main.php

$(document).ready(function(e)
 {
      $("#searchForm").submit(function(e)
       {
            e.preventDefault();
            $("#result").load("process_search.php",{"searchKeyID":$("#searchKeyID").val()}, function(response,status)
             {
                  alert(response);
             });

       });
 });


<body> 
   <form id="searchForm" method="post">
   <table>
      <tr>
          <td> <input type="text" id="searchKeyID" /> </td>
          <td> <input type="submit" id="searchButtonID" value="Search" /> </td>
      </tr>
   </table>
   </form>
<div id="result"></div>
</body>

这是process_search.php

  //search is done
  echo json_encode($results);

print_r将以无组织的方式向我显示数组的内容。我完全清楚我可以在有组织的方式中在process.php中回显它,以便它作为一个合适的数据组织出现在main.php中。但是,我希望array / obj返回main和IN MAIN,进行有组织的打印。这是我放的地方?????在我的代码中

我该怎么做?

我遇到了这个link。让我更加困惑。我不知道得到57票的答案如何运作。它是如何打印第二个索引的。我按原样复制代码并运行它。它印有Damskie和Muskie。它是如何知道要追踪的指数/值?

如果我键入警告(响应);代替问号,它有效。我看到整个obj /数组正确组织。我确实看到了打印数组的主题,但不像记录那样。 ...我忘了寻找在jquery中打印记录的网站:D立刻看看

编辑:我想出了我所包含的链接中的代码是如何工作的。

2 个答案:

答案 0 :(得分:3)

我建议使用 $.post() 而不是 $。load()。如果您这样做,请尝试使用以下代码:

$(document).ready(function(e) {
    $("#searchForm").submit(function(e) {
        e.preventDefault();
        $.post("process_search.php", {searchKeyID:$("#searchKeyID").val()},function (data) {
            // data is now the same Array as the one you had in process_search.php ; You can now work with it as you like ; e.g.:
            alert(data[0]);
        },"json");
    });
 });

<body> 
    <form id="searchForm" method="post">
        <table>
            <tr>
                <td> <input type="text" id="searchKeyID" /> </td>
                <td> <input type="submit" id="searchButtonID" value="Search" /> </td>
            </tr>
        </table>
    </form>
    <br />
    <br />
    <div id="result"></div>
</body>

执行此操作时,您需要更改 process_search.php 中的打印:

print_r($result);

为:

echo json_encode($result);     

答案 1 :(得分:0)

好的,首先,感谢zombiecode提供帮助。他的回答有助于我达成的解决方案。

我有从数据库中检索到的记录。我想以div中的表格的形式打印这些。有两种解决方案:在process_search.php中回显表,它将出现在mainpage.php中使用load()方法的div容器中。第二种解决方案是在mainpage.php中接收记录,并使用jquery动态创建表。

第一种解决方案很简单。这是我遇到麻烦的第二个。而我正在“试验”。

这是使用我自己的代码的解决方案

<script>
$(document).ready(function(e)
 {
     $("#searchForm").submit(function(e)
      {
          e.preventDefault();
          //linebegin
          $("#result").load("process_search.php", {searchKeyID:$("#searchKeyID").val()}, function (response,status)
           {
               var x = $.parseJSON(response);  //1
               var table = $('<table></table>');
               for (i = 0; i < x.length; i++)
                {
                   var row = $('<tr></tr>').text(x[i].email);
                   table.append(row);
                }

               $('#result').html(table); //3
           }); //lineend
      });
 });
</script>

<body>
 <form id="searchForm" method="post">
 <table>
    <tr>
       <td> <input type="text" id="searchKeyID" /> </td>
       <td> <input type="submit" id="searchButtonID" value="Search" /> </td>
    </tr>
 </table>
 </form>
 <div id="result"></div>
</body>

在process_search.php中

    //do search using any method you want
    //echo the result
    //4
    echo json_encode($rows); // <--- zombiecode's contribution

在// 4中,如果你将zombie的代码更改为print_r($ rows),我将会看到: - 数组([0] =&gt;数组([id] =&gt; 13 [名称] =&gt; abc [电子邮件] =&gt; issmon441@hotmail.com [用户名] =&gt; wildheart25c [密码] =&gt; aaaaaa) )

难看。

这是我回声json并解析它时的样子(mainpage.php // 1) [{ “ID”: “13”, “名称”: “ABC”, “电子邮件”: “issmon441@hotmail.com”, “用户名”: “wildheart25c”, “密码”: “AAAAAA”}]

好多了吧?

这里有一个问题。方法LOAD在指定的位置/容器中打印已检索的内容:$(“#result”)。load(“process_search.php”,etcetc)。这就是为什么我写这条线// 3。它会写出来。所以我打印/显示两次。数组的方式和数组的内容以我想要的方式。

我假设这就是为什么僵尸建议我使用post而不是load。除非有其他原因。这link也有帮助 如果还有其他原因请告诉我。

如果我想使用zombie的答案,我将// linebegin和// lineend之间的内容与此交换

$.post("process_search.php", {searchKeyID:$("#searchKeyID").val()},function (data)
 {
     $("#result").append(data[0].email); //5
 },"json");

我向你展示了“丑陋”的阵列,以及在JSON中它如何让你看起来更好更容易。为了容纳僵尸的代码,如果我想打印数据以查看“更容易更好”的内容,我输入      alert( JSON.stringify( data ) );

如果我想仅查看第一张唱片      alert( JSON.stringify( data[0] ) );

在// 5中我打印对象中第一条记录的电子邮件值。 我可以说数据[0]并且它将打印整个数组。因为我有一条记录返回,所以它是data0。如果我有更多记录,那么data1 data2等等。

您可以使用this主题中的答案打印表格。你需要做一些小改动。

我希望这能清除所有人。