在表中显示JSON数组的值

时间:2021-02-25 08:05:08

I am trying to display the values of an array I created in a table. The original solution I built was made to display a single value of the array that had an exact match to an ID in the array. You can view this at (http://www.users.miamioh.edu/chaudha/cse252/assignment92/). Typing in "jjones" will display a result.

我试图显示我在表中创建的数组的值。我构建的原始解决方案是为了显示与数组中的ID完全匹配的数组的单个值。您可以在(http://www.users.miamioh.edu/chaudha/cse252/assignment92/)查看。输入“jjones”将显示结果。

I modified this solution to accept partial queries as well as display every value that fits under the partial query (Note: http://www.users.miamioh.edu/chaudha/cse252/assignment9/service/people/jj versus http://www.users.miamioh.edu/chaudha/cse252/assignment92/service/people/jj). I began running into issues in regards to parsing the array into the table. The end goal is to display a list of people that meet the partial query. I am trying to figure out what needs to be altered in the Javascript in order to accomplish this.

我修改了这个解决方案以接受部分查询,并显示适合部分查询的每个值(注意:http://www.users.miamioh.edu/chaudha/cse252/assignment9/service/people/jj与http:/ /www.users.miamioh.edu/chaudha/cse252/assignment92/service/people/jj)。我开始遇到有关将数组解析到表中的问题。最终目标是显示符合部分查询的人员列表。我试图弄清楚在Javascript中需要改变什么才能实现这一目标。

My JS is as follows:

我的JS如下:

$(document).ready( function () {
$("#searchClassmates").keyup(function(){
    var searchValue = document.getElementById('searchClassmates').value;
    $.getJSON("http://www.users.miamioh.edu/chaudha/CSE252/Assignment9/service/people/" + searchValue, function (json) {
        for(var i = 0; i < json.length; i++) {
            $("<tr>").appendTo("#classMateResults");
            $("<td>" + json[i].firstName  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].lastName  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].age  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].major  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].phone  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].email  + "</td>").appendTo("#classMateResults");
            $("<td>" + json[i].state  + "</td>").appendTo("#classMateResults");
            $("</tr>").appendTo("#classMateResults");
        }
    });
  });
});

The table:

桌子:

$people = array(
'jjones' => array('firstName' => 'Jim', 'lastName' => 'Jones', 'age' => 20, 'major' => 'Computer Science', 'phone' => '212-460-9393', 'email' => 'jjones@miamioh.edu', 'state' => 'OH'),
'asmith' => array('firstName' => 'April', 'lastName' => 'Smith', 'age' => 19, 'major' => 'Mechanical Engineering', 'phone' => '913-939-3929', 'email' => 'asmith@miamioh.edu', 'state' => 'WY'),
'pstemple' => array('firstName' => 'Pat', 'lastName' => 'Stemple', 'age' => 21, 'major' => 'Theater Performance', 'phone' => '917-222-2232', 'email' => 'pstemple@miamioh.edu', 'state' => 'NY'),
'jjones1' => array('firstName' => 'Janet', 'lastName' => 'Jones', 'age' => 22, 'major' => 'Botany', 'phone' => '817-332-9392', 'email' => 'jjones1@miamioh.edu', 'state' => 'CA'),
'llerner' => array('firstName' => 'Leon', 'lastName' => 'Lerner', 'age' => 18, 'major' => 'Biology', 'phone' => '315-444-3494', 'email' => 'llerner@miamioh.edu', 'state' => 'OH'),
'mmeyer' => array('firstName' => 'Margret', 'lastName' => 'Meyer', 'age' => 24, 'major' => 'Interactive Media Studies', 'phone' => '219-333-0303', 'email' => 'mmeyer@miamioh.edu', 'state' => 'OH'),
'achaudhry' => array('firstName' => 'Anik', 'lastName' => 'Chaudhry', 'age' => 19, 'major' => 'Management Information Systems', 'phone' => '914-555-5555', 'email' => 'achaudhry@miamioh.edu', 'state' => 'NY'),
'sdogg' => array('firstName' => 'Snoop', 'lastName' => 'Dogg', 'age' => 42, 'major' => 'Botany', 'phone' => '414-333-2433', 'email' => 'sdogg@miamioh.edu', 'state' => 'CA'),
'bclinton' => array('firstName' => 'Bill', 'lastName' => 'Clinton', 'age' => 25, 'major' => 'Political Science', 'phone' => '933-440-3033', 'email' => 'bclinton@miamioh.edu', 'state' => 'AK'),);

PHP

PHP

function display_person($query) {
global $people;
$foundid = array();
foreach ($people as $k => $v)
if (stripos($k, $query) !== false)
{
    $foundid[$k] = $v;
}
if(count($foundid) > 0) {
    header('Content-type: application/json');
    echo json_encode($foundid); // NOTE: you need to change your JS code to accept array instead of 1 person
} else {
    header('HTTP/1.1 404 Not Found');
}}

1 个解决方案

#1


1  

The problem is that your json answer does not have a length properly. Try adding a

问题是你的json答案没有正确的长度。尝试添加一个

console.log(json.length);

before the loop in your javascript.

在你的javascript循环之前。

You can find an answer to a similar question here:

您可以在此处找到类似问题的答案:

get size of json object

获取json对象的大小

#1


1  

The problem is that your json answer does not have a length properly. Try adding a

问题是你的json答案没有正确的长度。尝试添加一个

console.log(json.length);

before the loop in your javascript.

在你的javascript循环之前。

You can find an answer to a similar question here:

您可以在此处找到类似问题的答案:

get size of json object

获取json对象的大小