【发布时间】:2018-12-02 01:11:11
【问题描述】:
我在表格中显示 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);
}
阿贾克斯
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"
]
【问题讨论】:
-
是字符串类型的吗?在
console.log()中检查它,它应该是数组而不是字符串。 -
您的数组是字符串数组,而不是对象数组。没有密钥,因为您正在尝试引用它们。看看你的 json。
-
你只有一个简单的字符串数组,而不是对象。数组中的任何地方都没有 first_name、last_name 或 phone 属性。甚至没有一个对象可以具有这样的属性 - 从您的
response数据中很容易看出这一点。也许您不了解您的数据?你想象这些领域是从哪里来的?他们不能只是通过魔法出现。最好的办法是更改您的服务器端代码,使其以更结构化的 JSON 格式输出数据。 -
你应该在
/Search/get_search_result中修复这个问题,否则修复会变得很糟糕。 -
@user9437856 我已经发布了一个答案,我假设这是服务器上的 PHP,它看起来像它(我修改了标签)。 Adder 意味着如果你尝试在 JavaScript 中修复这个问题,你最终会得到更复杂和丑陋的代码,因为你必须将每个数组字符串分成几部分来找到单独的值,这比仅仅拥有一个正确的对象结构更混乱开始。