在表格中显示JSON响应时变得未定义

时间:2018-06-22 14:16:13

标签: php jquery html json ajax

我在表中显示JSON响应,但得到undefined。我从数据库中获得一条记录或多条记录。我在警报中得到正确的输出。 控制器

if (count($result) > 0) {
            foreach ($result as $row){
                $arr_result[] = $row->first_name .', '. $row->last_name .', '. $row->phone .', '.$row->chss_no;  
             }
                echo json_encode($arr_result);
            }

Ajax

submitHandler: function(form) {
        var cust_name = $('#cust_name').val();
        var mobile_no = $('#mobile').val();                             
        $.ajax({
            url: baseUrl + "/Search/get_search_result",
            method: "POST",
            data: {cust_name: cust_name,mobile_no:mobile_no},
            success: function(response) {
                var data = JSON.parse(response);
                var trHTML = '';
                    $.each(data, function (i, o){
                    trHTML += '<tr><td>' + o.first_name +
                             '</td><td>' + o.last_name +
                             '</td><td>' + o.phone +
                             '</td></tr>';
                          });
                  $('.search_record tbody').append(trHTML);
           }
       });

    }

表格

<div class="search_record" >      
   <table id="" class="table table-bordered table-striped">
                <thead>
                    <tr>  
                    <th>Firstname</th>
                    <th>Lastname</th>
                    <th>Mobile</th>
                  </tr>
                 </thead>            
                <tbody> 

                </tbody>
            </table>
            </div>

我正在获取输出

alert(response)

[
    "Praveen, , 2121212121, jbhdbdhdb",
    "Praveen, Sharma, 9898981234, 09\/ACDE10",
    "Praveen, Sharma, 9898981234, 09\/ACDE10",
    "Praveen, Sharma, 9898981234, 09\/ACDE10"
]

在表输出中 enter image description here

2 个答案:

答案 0 :(得分:2)

您只有简单的字符串数组,而不是对象。阵列中的任何地方都没有first_name,last_name或phone属性。甚至没有一个对象可以具有这样的属性-从响应数据中很容易看出来。

最好的办法是更改服务器端代码,以便它以更结构化的JSON格式输出数据:

$arr_result = array();

if (count($result) > 0)
{
  foreach ($result as $row)
  {
    $arr_result[] = array(
      "first_name" => $row->first_name,
      "last_name" => $row->last_name,
      "phone" => $row->phone,
      "chss" => $row->chss_no
    );
  }
}

echo json_encode($arr_result);

我还对代码进行了一些修改,因此即使没有结果,它也会始终以JSON格式输出一个空数组。

答案 1 :(得分:1)

在将$row作为对象或数组编码为JSON之前,应将$arr_result = array(); if (count($result) > 0) { foreach ($result as $row){ $arr_result[] = $row; } echo json_encode($arr_result); } else { echo "[]"; } 放入数组中。

barplot(height = dat$OUT, names.arg = row.names(dat))