ajax 在 CakePHP 2.7 中请求但未能 return 数据

ajax request in CakePHP 2.7 but failed to return data

我正在尝试执行 ajax 请求,当 link 是点击传递 ID 值时。并尝试在成功时提醒数据。请告诉我哪里出了问题。我想在 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));
        }
    }
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);
    });

我尝试在 ajax

中添加 dataType: 'json'
$('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();
    });

并且在我的视图方法中我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')?

加载我的视图内容时,为什么我不能加载它?