我有一个PHP文件,它从数据库中请求六行。我正在使用ajax调用。
我希望将这六行(多列)传递到我的主文件。我无法找到将这些值传递到主页的方法,除非在请求文件中将它们发布到html中并将其作为表格发布在我的主页上。
我不希望它们在普通表格中的页面上供所有人看到。
所以不喜欢这样:
success: function(html) {
$("#display").html(html).show();
}
我现在总是需要六排,但可能会更晚。
我的一个想法是将它作为一个长字符串发布并将其加载到变量中,然后使用explode或类似的东西进行读取。不确定这是否是一个很好的方法......
我基本上是在寻求扩展视野的想法。
我还在学习JavaScript和jQuery,所以我宁愿有一个很好的解释而不是一块工作代码。
提前致谢!
答案 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中的接收数据执行操作。