从AJAX调用中检索多个变量到jQuery

时间:2018-04-05 15:00:47

标签: javascript php jquery arrays ajax

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

我希望将这六行(多列)传递到我的主文件。我无法找到将这些值传递到主页的方法,除非在请求文件中将它们发布到html中并将其作为表格发布在我的主页上。

我不希望它们在普通表格中的页面上供所有人看到。

所以不喜欢这样:

success: function(html) {
    $("#display").html(html).show();
}

我现在总是需要六排,但可能会更晚。

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

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

我还在学习JavaScript和jQuery,所以我宁愿有一个很好的解释而不是一块工作代码。

提前致谢!

2 个答案:

答案 0 :(得分:1)

PHP端

这是一个非常简单的过程,你可以在抓住之后踢自己;)但是一旦你这样做,就会打开一个充满可能性的世界,你的思想会因为想法而疯狂。

第一阶段是您要调整您将返回到ajax调用的数据。如果你有一些几个字段的行,你会有这些行的东西(可能来自数据库,或任务,无论如何):

$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_encode()的欢乐!

JAVASCRIPT Side

这方面并不困难,但有些事情要理解。首先,让你的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>

所以我们来解释几个关键点。

最重要的是dataType: 'json'。这告诉你的ajax调用EXPECT一个json字符串变成一个对象。该对象成为您在成功函数arg中定义的对象(我在上面命名为obj)。

现在,要访问每行的每个特定数据变量,请将其视为对象。行数组,每行都有名称为您在PHP中命名的变量。这是我用for示例循环遍历行数组的地方。

例如obj[0].thing指的是变量thing的第一行。使用i可让您根据对象的length自动浏览所有行。那里有一些方便的东西。

您可以从返回的对象和值构建任何您想要的html。我刚刚展示了如何设置<div><span class="thing"></span><span class="details"></span></div>示例行。您可能希望使用表格或更复杂的设置和代码。

要保留ajax调用的返回数据,可以将其存储在本地或全局变量中,如下所示:

<script>
var globalvar;
$....('click',function(e){
    var localvar;
    $.ajax(.... success: function(obj){
        ....
        localvar = obj;
        globalvar = obj;
        ....
    });
});
</script>

答案 1 :(得分:0)

做上面Frederico所说的话。从你的php返回json并使用ajax调用进入jQuery。 这样的事情:http://makitweb.com/return-json-response-ajax-using-jquery-php/。如果您不需要将其打印到html,请跳过步骤#3并按步骤5中的接收数据执行操作。