CakePHP 2.7中的ajax请求但未能返回数据

时间:2015-11-27 03:33:00

标签: jquery ajax cakephp cakephp-2.3

我正在尝试在链接单击传递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));
        }
    }

2 个答案:

答案 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')加载时,为什么我无法加载视图的内容?