2015-11-27 3 views
0

Я пытаюсь выполнить запрос ajax, когда ссылка переместит значение id. И попытайтесь предупредить данные в случае успеха. Пожалуйста, скажите мне, что не так. Я хочу, чтобы отобразить данные в view.ctp затем загрузить его в index.ctp после запроса AjaxЗапрос ajax в CakePHP 2.7, но не удалось вернуть данные

$('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

в chrome и mozilla я могу предупредить «AJAX SUCCESS», но он будет перенаправлен на страницу/контакты/просмотр. –

ответ

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')?

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); 
    }); 
+0

Да, я попытался, но как я могу отобразить данные в view.ctp и отобразить его индекс? Я пытался использовать $ ('div # view-contact'). load (href + '.view-contact'); для его отображения, но он не работает. –

+0

Что такое значение в href? –

+0

/bootstrap_exercise/contacts/view/47 сэр. я попытался отобразить $ this-> request-> data ('product_id'), но он возвращает null sir –