我过去曾使用过这种方法,但从未使用过CodeIgniter。我正在努力搞清楚CI。
我对数据网格格式化的数据库结果进行了非常基本的AJAX调用。
在控制台中观看,预期结果显示出来,但我无法弄清楚为什么它不会写入我的<div>
。 (我确实收到了您在下面.complete
中看到的提醒)
jQuery的:
var myOnload = function(){
$.ajax({
url: 'http://contacts.drumichael.xyz/contacts/load_contacts',
type: 'post',
dataType: 'json',
data: {get_it: 'yes'},
}).complete(function(data) {
$(".the_list").html(data);
alert('done');
});
};
myOnload();
控制器如下所示:(简化)
public function load_contacts() {
$query = $this->db->query("SELECT * FROM contacts_list");
$array = $query->result();
$return = '';
$return .= '<div class="panel-heading text-right"><a href="" class="btn btn-sm btn-primary btn-new"><i class="fa fa-plus"></i> New Contact</a></div>';
$return .= '<table class="table table-striped table-hover">';
$return .= ' <thead>';
$return .= ' <tr>';
$return .= ' <th></th>';
$return .= ' <th>Last Name</th>';
$return .= ' <th>First Name</th>';
$return .= ' <th>Cell</th>';
$return .= ' <th>Home</th>';
$return .= ' <th>Address 1</th>';
$return .= ' <th>Email</th>';
$return .= ' <th>URL</th>';
$return .= ' <th></th>';
$return .= ' </tr>';
$return .= ' </thead>';
$return .= ' <tbody>';
if(!empty($array)) {
foreach($array as $row) {
$return .= '<tr>';
$return .= '<td><i class="fa fa-pencil"></i></td>';
$return .= '<td>'.$row->lname.'</td>';
$return .= '<td>'.$row->fname.'</td>';
$return .= '<td>'.$row->phone1.'</td>';
$return .= '<td>'.$row->phone2.'</td>';
$return .= '<td>' .$row->address1. ' ' .$row->city.', ' .$row->state. ' ' .$row->zip. '</td>';
$return .= '<td>'.$row->email.'</td>';
$return .= '<td>'.$row->url.'</td>';
$return .= '<td><a href="" class="btn-delete" data-rec-id="'.$row->id.'"><i class="fa fa-trash"></i></a></td>';
$return .= '</tr>';
}
} else {
$return .= '<tr><td colspan="9">You don\'t have any contacts yet! Why not create some?</td></tr>';
}
$return .= '</tbody></table></div>';
echo $return;
}
在视图中,我有<div class="the_list"></div>
,但它永远不会被HTML取代。就像我之前说的那样,我可以在Firefox的控制台的响应部分看到HTML。关于我出错的任何想法?
答案 0 :(得分:2)
问题不是特定于代码Igniter,即ajax调用中的问题。
您正在使用.complete
方法,该方法将返回XMLHttpRequest对象。
因此,在您的情况下,您可以使用`
data.responseText
它将返回已回复的文本。所以,修改后的代码将是。
$(document).ready(function() {
var myOnload = function(){
$.ajax({
url: 'http://contacts.drumichael.xyz/contacts/load_contacts',
type: 'post',
dataType: 'json', // need not to specify if you are not returning json
data: {get_it: 'yes'},
}).complete(function(data, xhr, settings) {
$(".the_list").html(data.responseText);
alert('done');
});
};
myOnload();
});