Запрос 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);
    });
Другие вопросы по тегам