Javascript 无法在html表中显示json数组

Javascript 无法在html表中显示json数组,javascript,jquery,json,ajax,Javascript,Jquery,Json,Ajax,我正在使用php脚本生成json数组。json数组由jQueryAjax脚本检索,然后该脚本尝试读取该数组并将其嵌入html表中。但是,我被卡住了,因为它一直在表中生成“未定义”的数据。我想在ajax成功返回后在表中显示json数组的信息。请帮忙 JSON数组格式 [{"fullname":"Frank Robsinga","gender":"Male","email":"n\/a","phone":"n\/a","status":"1"}] javascript <script>

我正在使用php脚本生成json数组。json数组由jQueryAjax脚本检索,然后该脚本尝试读取该数组并将其嵌入html表中。但是,我被卡住了,因为它一直在表中生成“未定义”的数据。我想在ajax成功返回后在表中显示json数组的信息。请帮忙

JSON数组格式

[{"fullname":"Frank Robsinga","gender":"Male","email":"n\/a","phone":"n\/a","status":"1"}]
javascript

<script>
$("#lookup").click(function() {

var key = $("#search").val();

$.ajax({
    type : 'POST',
    url : 'scripts/search-user-script.php',
    data : {
        key : key
    },
    success : function(obj) {

        $("#usersdata").html("");
        for (var i = 0; i < obj.length; i++) {
            var tr = "<tr>";
            var td0 = "<td>" + (i + 1) + "</td>";
            var td1 = "<td>" + obj[i]["fullname"] + "</td>";
            var td2 = "<td>" + obj[i]["gender"] + "</td>";
            var td3 = "<td>" + obj[i]["email"] + "</td>";
            var td4 = "<td>" + obj[i]["phone"] + "</td>";
            var td5 = "<td>" + obj[i]["status"] + "</td></tr>";
            $("#usersdata").append(tr + td0 + td1 + td2 + td3 + td4 + td5);

        }

    }
});
// .ajax
});
</script>

$(“#查找”)。单击(函数(){
var key=$(“#搜索”).val();
$.ajax({
键入:“POST”,
url:'scripts/search user script.php',
数据:{
钥匙:钥匙
},
成功:功能(obj){
$(“#usersdata”).html(“”);
对于(变量i=0;i
结果的屏幕截图

var obj=[{
“全名”:“Frank Robsinga”,
“性别”:“男性”,
“电子邮件”:“不适用”,
“电话”:“不适用”,
“状态”:“1”
}]
对于(变量i=0;i
尝试以下代码, 确保json属性具有值。它不应该包含空值


var obj=[{“全名”:“Fname Lname”,
“性别”:“M”},{“全名”:“姓名2”,
“性别”:“F”}]
对于(变量i=0;i

您的ajax调用将返回一个字符串。在使用它之前,需要将其解析为
对象

for
循环之前尝试
obj=JSON.parse(obj)

比如:

function(obj) {
  obj = JSON.parse(obj); // Add this line
  $("#usersdata").html("");
  for (var i = 0; i < obj.length; i++) {
    var tr = "<tr>";
    var td0 = "<td>" + (i + 1) + "</td>";
    var td1 = "<td>" + obj[i]["fullname"] + "</td>";
    var td2 = "<td>" + obj[i]["gender"] + "</td>";
    var td3 = "<td>" + obj[i]["email"] + "</td>";
    var td4 = "<td>" + obj[i]["phone"] + "</td>";
    var td5 = "<td>" + obj[i]["status"] + "</td></tr>";
    $("#usersdata").append(tr + td0 + td1 + td2 + td3 + td4 + td5);

  }

}
功能(obj){
obj=JSON.parse(obj);//添加此行
$(“#usersdata”).html(“”);
对于(变量i=0;i
我尝试了您的代码,并且能够看到正确的输出。我猜,您一定有一些错误,请查看控制台进行检查

请找到那个

请参阅以下代码:

HTML:

<table id="dataTable">

</table>
$(function() {
  var data = [{
    "fullname": "Frank Robsinga",
    "gender": "Male",
    "email": "lorem@234.com",
    "phone": "3243434343",
    "status": "1"
  }, {
    "fullname": "Lorem ipsum",
    "gender": "Male",
    "email": "lorem@123.com",
    "phone": "3445656565",
    "status": "2"
  }, {
    "fullname": "ex eam dictas",
    "gender": "Female",
    "email": "lorem@435.com",
    "phone": "87878676",
    "status": "1"
  }];

  for (i = 0; i < data.length; i++) {
    var tr = "<tr>";
    var td0 = "<td>" + (i + 1) + "</td>";
    var td1 = "<td>" + data[i]["fullname"] + "</td>";
    var td2 = "<td>" + data[i]["gender"] + "</td>";
    var td3 = "<td>" + data[i]["email"] + "</td>";
    var td4 = "<td>" + data[i]["phone"] + "</td>";
    var td5 = "<td>" + data[i]["status"] + "</td></tr>";
    $("#dataTable").append(tr + td0 + td1 + td2 + td3 + td4 + td5);

  }
});
table {
  border-collapse: collapse;
}

table,
td {
  border: 1px solid;
}

只需使用$obj[$i]>fullname@Manmohanjavascript不是PHP
obj[i]。全名
你的代码有什么问题?@Mohammad
obj[i][“status”
将返回未定义的。如果它缺少
,并且在
obj[i]中有
[”“]
。status
@Manmohan:尝试了,但仍然失败。在控制台中显示此消息。“UncaughtTypeError:无法读取undefined”的属性'length',您必须在ajax@BlakeTucker中添加
数据类型:'json',
,比如
类型:'POST',url:'scripts/search user script.php',数据类型:'json',
@guardio:我添加了数据类型:'json',它成功了。它现在返回值。非常感谢。然后你可以试试上面的方法
obj
必须是字符串,而不是对象。他提到了JSON数组。你必须将JSON转换为对象,而不是使用对象。我想是的。因为obj.length返回92(即数组中包括大括号和圆括号在内的字符总数),所以您需要将JSON数据转换为object,而不是使用object。@R3tep,那么这里需要向下投票吗?不过,
ajax
调用的
url
是相对的。