我正在尝试根据日期范围显示记录。
脚本
$(function() {
$(document).on("click", "#btnSubmit", function(e) {
e.preventDefault();
var info = $("#search").serialize();
alert(info);
$.ajax({
type: 'POST',
url: 'url',
data: info,
success: function(response) {
alert(response);
var obj = $.parseJSON(response);
var trHTML = '';
$.each(response, function(i, o) {
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
$('#records_table').append(trHTML);
}
});
e.preventDefault();
});
});
HTML
<table class='table table-striped table-bordered table-hover' id='records_table'>
</table>
控制器
public function getsearch(){
$this->load->model('History_m');
$fromdate=$this->input->post('dateFrom');
$todate=$this->input->post('dateTo');
$date1=date( 'Y-m-d', strtotime($fromdate));
$date2=date( 'Y-m-d', strtotime($todate));
$result = $this->History_m->search($date1,$date2);
echo json_encode($result);
}
模型
function search($date1,$date2){
$this->db->trans_start();
$query = $this->db->query("SELECT * FROM `referral_confirmation_details` WHERE `created_on` >= '".$date1."' AND `created_on` <= '".$date2."'");
$this->db->trans_complete();
if($query->num_rows()>=1)
return $query->result();
}
AJAX响应
我得到alert(response)
的输出为:
[
{
"ID":"1",
patient_name":"xyz",
"patient_email":"xyz@gmail.com",
"gender":"Male",
"age":"23",
"address":"xyz",
"city":"bangalore",
"password":"fzf1"
}
我收到错误,例如“位于0的JSON中的意外令牌A”。
答案 0 :(得分:1)
$.each(response, function (i, o){
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
你在每个循环中传递响应变量你应该添加obj,否则你应该首先使用解析并传入循环。所以你可以解决问题。 并且在你的json回应中有缺失。
答案 1 :(得分:1)
里面有两个错误:
请更改
$.each(response, function(i, o) {
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
到
$(obj).each(function(i) {
trHTML += '<tr><td>' + this.patient_name +
'</td><td>' + this.patient_address +
'</td></tr>';
});
您希望迭代解析的JSON对象而不是HTTP响应,对吧?如需进一步阅读,请查看jQuery $().each
:https://api.jquery.com/each/
答案 2 :(得分:0)
您没有使用JSON对象,而是使用响应JSON字符串。 尝试
$.each(obj, function (i, o){
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
答案 3 :(得分:0)
我认为json
结尾处缺少]
[{"ID":"1","patient_name":"xyz","patient_email":"xyz@gmail.com","gender":"Male","
age":"23","address":"xyz","city":"bangalore","password":"fzf1"}]
答案 4 :(得分:0)
您需要将字符串转换为对象。试试以下..
$.ajax({
type: 'POST',
url: 'url',
data: info,
dataType: 'json',
success: function(response){
var obj = $.parseJSON(response);
var trHTML = '';
$.each(obj, function (i, o){
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
答案 5 :(得分:0)
谢谢大家,我终于得到了结果。我已经更新了正确的脚本,以便对面临同样问题的人有所帮助。
$(document).on("click", "#btnSubmit", function(e) {
e.preventDefault();
var info = $("#search").serialize();
$.ajax({
type: 'POST',
url: 'url',
data: info,
dataType: 'json',
success: function(response){
var trHTML = '';
$.each(response, function (i, o){
trHTML += '<tr><td>' + o.patient_name +
'</td><td>' + o.patient_address +
'</td></tr>';
});
$('#records_table').append(trHTML);
}
});
e.preventDefault();
});