Запрос ajax в CakePHP 2.7, но не удалось вернуть данные
Я пытаюсь выполнить запрос AJAX, когда ссылка кликает значение идентификатора. И попробуйте предупредить данные в случае успеха. Пожалуйста, скажите мне, что не так. Я хочу отобразить данные в view.ctp, а затем загрузить их в index.ctp после запроса 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',
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));
}
}
2 ответа
Решение
Я пытался добавить 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')
?
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);
});