我正在尝试在链接单击传递id值时执行ajax请求。如果成功,请尝试提醒数据。请告诉我有什么问题。我想在view.ctp中显示数据,然后在ajax请求之后将其加载到index.ctp中
$('a.view-btn').on('click', function(e){
var view = $(this);
var id = view.data('id');
var href = view.attr('href');
$.ajax({
url: href,
type: 'POST',
data: {product_id: id},
success: function(data) {
alert(data);
$('div#view-contact').load(href + ' .view-contact');
}
});
console.log(id);
});
这是我在控制器中的编辑方法
public function view($id) {
if ($this->request->is('ajax')) {
$this->autoRender = false;
$this->set('contact', $this->request->data('product_id'));
echo "AJAX SUCCESS";
} else {
$this->set('contact', $this->Contact->findById($id));
}
}
答案 0 :(得分:0)
use e.preventDefault().It will stop your page to refresh
$('a.view-btn').on('click', function(e){
e.preventDefault();
var view = $(this);
var id = view.data('id');
var href = view.attr('href');
$.ajax({
url: href,
type: 'POST',
data: {product_id: id},
success: function(data) {
alert(data);
$('div#view-contact').load(href + ' .view-contact');
}
});
console.log(id);
});
答案 1 :(得分:0)
我尝试在dataType: 'json'
ajax
$('a.view-btn').on('click', function(e){
var view = $(this);
var id = view.data('id');
var href = view.attr('href');
$.ajax({
url: href,
type: 'POST',
dataType: 'json',
data: {product_id: id},
success: function(data) {
$('div#view-contact').load(href + ' .view-contact');
}
});
e.preventDefault();
});
在我看来的方法方法I echo json_encode($contact)
。它有效。
public function view($id) {
if ($this->request->is('POST')) {
$this->autoRender = false;
$contact = $this->request->data('product_id');
$this->set('contact', $contact);
echo json_encode($contact);
} else {
$this->set('contact', $this->Contact->findById($id));
}
}
但是代码中有一部分我不明白。当我尝试echo "ajax success";
时,这意味着我的ajax请求成功了吗?那么当我尝试使用jquery $().load(href + ' .view-contact')
加载时,为什么我无法加载视图的内容?