【问题标题】:printing ajax response which is print_r打印 ajax 响应,即 print_r
【发布时间】:2014-03-09 10:31:36
【问题描述】:

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

修订版!!! 这是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 中。但是,我希望数组/obj 返回 main 和 IN MAIN,进行有组织的打印。这是我放的地方??????在我的代码中

我该怎么做?

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

如果我输入警报(响应);代替问号,它可以工作。我看到整个 obj/array 组织得当。我确实看到了打印数组的主题,但不像记录。 ...我忘了寻找在 jquery 中打印记录的网站:我马上看

编辑:我弄清楚了我包含的链接中的代码是如何工作的。

【问题讨论】:

  • 怎样才能再获得 2 个代表点?如果他接受,我需要与他开始聊天,并且像我开始的其他话题一样,我想投票选出正确的答案。

标签: php jquery ajax


【解决方案1】:

我建议使用 $.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.请告诉我您在此处复制代码时的组织方式。你真的一直点击空格直到它在预览面板中看起来不错吗? 2.这是否意味着不能用print_r来完成?显然,所有解决方案都受到欢迎,包括插件,但它可以按照我的方式完成吗? :D
  • 从编辑器复制粘贴.. ;-) 对于您的问题:我不知道使用 print_r(); 的简单方法;因为 print_r() 只是将数组打印为纯文本。您可以再次使用 JS 解析该文本并创建一个数组,以便您可以再次组织它。我写给您的是通过 Ajax 进行的简单交换,您的数组在 php 和 JS 之间作为 JSON 对象处理。 ;-)
  • 够好够好。这就是我想要的。能够浏览它。如果我的方法可以完成,但这很麻烦,而且我有一个像你这样的解决方案,那么显然我会选择你的:D 所以 data.array 现在是一个 json obj,我可以让它跳过行或索引并打印特定数据对吗?
  • 是的,没有测试我的代码,但应该可以这样工作。如果没有,请告诉我,我会纠正它;-)
  • 我正要告诉你它没用。警报显示对象对象。就像它没有定义或什么的一样
【解决方案2】:

好的,首先感谢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 中,如果您将僵尸的代码更改为 print_r($rows),我将看到以下内容:- 数组([0] => 数组([id] => 13 [name] => abc [email] => issmon441@hotmail.com [username] => wildheart25c [password] => aaaaaa))

丑。

这是我回显 json 并解析它时的样子 (mainpage.php //1) [{"id":"13","name":"abc","email":"issmon441@hotmail.com","username":"wildheart25c","password":"aaaaaa"}]

好多了,对吧?

这里有一个问题。 LOAD 方法在指定的位置/容器中打印检索到的内容,例如:$("#result").load("process_search.php",etcetc)。所以这就是我写那行 //3 的原因。它会覆盖它。所以我要打印/显示两次。数组的样子和数组的内容我想要的样子。

我假设这就是僵尸建议我使用帖子而不是加载的原因。除非有别的原因。这个link 也有帮助 如果还有其他原因,请告诉我。

如果我想使用僵尸的答案,我用这个交换 //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 中,我正在打印对象中第一条记录的电子邮件值。 我可以说 data[0] 它会打印整个数组。因为我返回了一条记录,所以它是 data0。如果我有更多记录,那么 data1 data2 等等。

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

我希望这能解决大家的问题。

【讨论】:

    猜你喜欢
    • 2012-09-04
    • 2017-01-13
    • 1970-01-01
    • 2021-12-09
    • 2013-05-03
    • 2017-05-09
    • 1970-01-01
    • 2022-06-13
    • 2015-03-01
    相关资源
    最近更新 更多