如何使用JQuery$.getJSON将PHP文件中的数组发布到表中?
我试图根据用户输入的名为如何使用JQuery$.getJSON将PHP文件中的数组发布到表中?,php,jquery,arrays,json,Php,Jquery,Arrays,Json,我试图根据用户输入的名为firstname的变量将数组输出到表中。如果两个数组具有相同的firstname值,则该表应同时显示两个数组。当前,表中仅显示第一个数组。我已将当前代码包括在下面: $(document).ready(function() { var url = "data.php"; $('#getJSON').click(function(event) { event.preventDefault(); var firstnam
firstname
的变量将数组输出到表中。如果两个数组具有相同的firstname
值,则该表应同时显示两个数组。当前,表中仅显示第一个数组。我已将当前代码包括在下面:
$(document).ready(function() {
var url = "data.php";
$('#getJSON').click(function(event) {
event.preventDefault();
var firstname = $('#firstname').val();
url = url + "?firstname=" + firstname;
$.getJSON(url, function(json) {
var tr;
for (var i = 0; i < json.data.length; i++) {
tr = $("<tr/>");
tr.append("<td>" + json.data[0].id + "</td>");
tr.append("<td>" + json.data[0].title + "</td>");
tr.append("<td>" + json.data[0].firstname + "</td>");
$('table').append(tr);
}
});
});
});
我希望它像这样输出:非常感谢您的帮助 您可以尝试以下方法:
var tr;
for (var i = 0; i < json.data.length; i++) {
tr += "<tr>";
tr += "<td>" + json.data[i].id += "</td>";
tr += "<td>" + json.data[i].title += "</td>";
tr += "<td>" + json.data[i].firstname += "</td>";
tr += "</tr>";
}
$('table').html(tr);
var-tr;
for(var i=0;i
您可以尝试以下方法:
var tr;
for (var i = 0; i < json.data.length; i++) {
tr += "<tr>";
tr += "<td>" + json.data[i].id += "</td>";
tr += "<td>" + json.data[i].title += "</td>";
tr += "<td>" + json.data[i].firstname += "</td>";
tr += "</tr>";
}
$('table').html(tr);
var-tr;
for(var i=0;i
您有两个错误:
第一个是if子句的用法。由于您使用的是if-elseif
,因此不能在if
和elseif
中都使用相同的条件。else-if
表示如果之前的条件为false,则检查另一个条件。在这种情况下,由于第一个条件为true,因此永远不会执行elseif
第二,您总是将数据存储在结果数组的同一索引中,因此您将覆盖数据并始终在该数组中获取一个元素
$id=1;
$arr=array();
if ($firstname === "Emma"){
$arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "Emma", 'surname'=>"Brown");
$arr[] = array('id'=> $id++, 'title'=> "Mrs", 'firstname'=> "Emma", 'surname'=>"Green");
}
else if($firstname === "NotEmma")
$arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "NotEmma", 'surname'=>"xx");
else
$arr[] = array('id'=> "Unknown", 'title'=> "Unknown", 'firstname'=> "Unknown", 'surname'=> "Unknown");
echo '{"firstname":'.json_encode($arr).'}';
你有两个错误:
第一个是if子句的用法。由于您使用的是if-elseif
,因此不能在if
和elseif
中都使用相同的条件。else-if
表示如果之前的条件为false,则检查另一个条件。在这种情况下,由于第一个条件为true,因此永远不会执行elseif
第二,您总是将数据存储在结果数组的同一索引中,因此您将覆盖数据并始终在该数组中获取一个元素
$id=1;
$arr=array();
if ($firstname === "Emma"){
$arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "Emma", 'surname'=>"Brown");
$arr[] = array('id'=> $id++, 'title'=> "Mrs", 'firstname'=> "Emma", 'surname'=>"Green");
}
else if($firstname === "NotEmma")
$arr[] = array('id'=> $id++, 'title'=> "Miss", 'firstname'=> "NotEmma", 'surname'=>"xx");
else
$arr[] = array('id'=> "Unknown", 'title'=> "Unknown", 'firstname'=> "Unknown", 'surname'=> "Unknown");
echo '{"firstname":'.json_encode($arr).'}';
每次循环覆盖时
tr
tr=$(“”)代码>@atoms这很好,因为tr
附加在每个原子的末尾iteration@Emma你能给我们一个你正在检索的JSON和你期望的输出的例子吗。我不明白你说的“如果名字匹配,它应该显示两个数组”是什么意思。您可能还想将[0]
更改为[i]
,既然您已经在这里标记了PHP,您可以向我们展示生成JSON的脚本吗?您的代码很好,请尝试控制台.log(url)
在for
循环之前,检查您是否获得了预期的结果。。我认为您的php脚本只返回了第一个匹配项代码>@atoms这很好,因为tr
附加在每个原子的末尾iteration@Emma你能给我们一个你正在检索的JSON和你期望的输出的例子吗。我不明白你说的“如果名字匹配,它应该显示两个数组”是什么意思。您可能还想将[0]
更改为[i]
,既然您已经在这里标记了PHP,您可以向我们展示生成JSON的脚本吗?您的代码很好,请尝试控制台.log(url)
在for
循环之前,检查您是否获得了预期的结果。。我认为您的php脚本只在第一次匹配时返回。虽然这可能会执行得更好,但逻辑上与OP现在的相同,那么这会有什么好处呢?不是我的反对票,FyiwWorks对我来说,我唯一能想到的另一个原因是一个支离破碎的回应。所以如果这不起作用,OP应该检查他的反应。为什么OP要“尝试这个”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,也是为了SO的未来访客。虽然这可能会表现得更好,但逻辑上与OP现在的情况相同,那么这会有什么好处呢?不是我的反对票,FyiwWorks对我来说,我唯一能想到的另一个原因是一个支离破碎的回应。所以如果这不起作用,OP应该检查他的反应。为什么OP要“尝试这个”?一个好的答案总是会有一个解释,说明做了什么以及为什么这样做,不仅是为了OP,而且是为了SO的未来访客。谢谢Amani!PHP根本不是我的强项,但它工作得很好。:)不客气,这并不复杂,你只需要先理解你要做的事情背后的逻辑,然后再将其翻译成代码。谢谢你,Amani!PHP根本不是我的强项,但它工作得很好。:)不客气,这并不复杂,你只需要先理解你要做的事情背后的逻辑,然后将其转换为代码。