如何使用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根本不是我的强项,但它工作得很好。:)不客气,这并不复杂,你只需要先理解你要做的事情背后的逻辑,然后将其转换为代码。