Javascript 从对jQuery的AJAX调用中检索多个变量

Javascript 从对jQuery的AJAX调用中检索多个变量,javascript,php,jquery,arrays,ajax,Javascript,Php,Jquery,Arrays,Ajax,我有一个PHP文件,它从数据库中请求六行。我正在使用ajax调用 我希望将这六行多列传递到我的主文件。除了在请求文件中以html格式发布这些值并在主页上以表格形式发布之外,我无法找到将这些值发布到主页的方法 我不想把它们放在一张普通的桌子上,让每个人都看到 所以不是这样的: 我现在总是需要六排,但以后可能会更多 我的一个想法是将其作为一个长字符串发布,并将其加载到一个变量中,然后使用explode或类似于a的东西进行读取。不确定这是不是一个好方法 我基本上是在寻求扩大视野的想法 我仍在学习Jav

我有一个PHP文件,它从数据库中请求六行。我正在使用ajax调用

我希望将这六行多列传递到我的主文件。除了在请求文件中以html格式发布这些值并在主页上以表格形式发布之外,我无法找到将这些值发布到主页的方法

我不想把它们放在一张普通的桌子上,让每个人都看到

所以不是这样的:

我现在总是需要六排,但以后可能会更多

我的一个想法是将其作为一个长字符串发布,并将其加载到一个变量中,然后使用explode或类似于a的东西进行读取。不确定这是不是一个好方法

我基本上是在寻求扩大视野的想法

我仍在学习JavaScript和jQuery,因此我宁愿有一个好的解释,也不愿有一块工作代码


提前谢谢

照上面弗雷德里科说的做。从php返回json,并使用ajax调用进入jQuery。 类似这样的内容:。如果您不需要将接收到的数据打印成html,只需跳过第3步,在第5步中对其执行所需操作。

PHP侧

这是一个非常简单的过程,你可能会在抓住后踢自己;但一旦你这样做了,它就会打开一个充满可能性的世界,你的头脑就会被各种想法弄疯

第一阶段是调整将返回ajax调用的数据。如果您有几行几个字段,那么您确实可以从db或assignments中获得以下内容:

$rows = [];
$rows[] = array('thing'=>'value 1','something'=>'blah','tertiary'=>'yup');
$rows[] = array('thing'=>'value 2','something'=>'yadda','tertiary'=>'no');
$rows[] = array('thing'=>'value 3','something'=>'woop','tertiary'=>'maybe');
现在,要将这些数据行输出到ajax,需要执行以下一个简单操作:

echo json_encode($rows);
exit; // important to not spew ANY other html
这就是PHP方面真正需要做的事情。那么我们做了什么?我们获取了一个多维数据数组,通常表示来自数据库的数据,并将其编码为JSON格式并返回。在您的浏览器中,上述内容如下所示:

[{"thing":"value 1","something":"blah","tertiary":"yup"},
 {"thing":"value 2","something":"yadda","tertiary":"no"},
 {"thing":"value 3","something":"woop","tertiary":"maybe"}]
它将处理utf8和其他特殊字符的所有转义和编码。json_编码的乐趣

JAVASCRIPT端

这方面没有那么困难,但有些事情需要理解。首先,让我们了解jquery ajax调用:

<div id="rows"></div>
<script>
$("#your-trigger").on('click',function(e){
    e.preventDefault(); // just stops the click from doing anything else
    $.ajax({
       type: "POST",
       url: 'your_ajax.php',
       data: { varname: 'value', numrows: '6' },// your sent $_POST vars
       success: function(obj) {
           // loop on the obj return rows
           for(var i = 0; i < obj.length; i++) {
               // build a div row and append to #rows container
               var row = $('<div></div>');
                   row.append('<span class="thing">'+ obj[i].thing +'</span>'); 
                   row.append('<span class="details">'+  
                                   obj[i].something +' '+ obj[i].tertiary
                               +'</span>');
               $("#rows").append(row);
           }
       },
       dataType: 'json' // important!
    });
});
</script>

让php返回一个json数组,其中包含代表您的六行的对象,然后让jQuery接受一个json答案。当我们发出AJAX请求时,我们通常只检索页面上所需的数据。听起来您正在采取发回完整HTML文件的方法。正如Federico所说,您可以简单地回显json_编码的数据,然后使用JS和jQuery在浏览器中处理数据。从服务器上获得的一切基本上都是一堆字符。但是,您可以使用JSON或YAML等标记语言发送有序数据。感谢您的详细解释!我应该说我对PHP非常熟悉,但是哦,好吧,无论如何,谢谢。但是我有一个问题,是否可以将值保存到数组或其他东西中,然后将其推送到已经存在的HTML中?是的,您可以保存返回的对象。您可以在html文档的任何位置使用该对象中的任何内容。如果你有具体的细节,我可以添加一些例子。非常感谢你的帮助,解释得很好!在与javascript对象进行了一些混乱之后,我让它开始工作。。。再次感谢!当之无愧的回答:D
<div id="rows"></div>
<script>
$("#your-trigger").on('click',function(e){
    e.preventDefault(); // just stops the click from doing anything else
    $.ajax({
       type: "POST",
       url: 'your_ajax.php',
       data: { varname: 'value', numrows: '6' },// your sent $_POST vars
       success: function(obj) {
           // loop on the obj return rows
           for(var i = 0; i < obj.length; i++) {
               // build a div row and append to #rows container
               var row = $('<div></div>');
                   row.append('<span class="thing">'+ obj[i].thing +'</span>'); 
                   row.append('<span class="details">'+  
                                   obj[i].something +' '+ obj[i].tertiary
                               +'</span>');
               $("#rows").append(row);
           }
       },
       dataType: 'json' // important!
    });
});
</script>
<script>
var globalvar;
$....('click',function(e){
    var localvar;
    $.ajax(.... success: function(obj){
        ....
        localvar = obj;
        globalvar = obj;
        ....
    });
});
</script>