2016-11-05 1 views
0

Я не могу получить ответ ajax при отправке модальной формы диалога. Он отлично работает, когда форма не является модальной.получить ответ ajax в диалоге модальной формы jquery

Форма:

<div id="form2" style="display: none"> 
    <form id="objectInsert" action="element/create" method="POST" enctype="multipart/form-data"> 
     <div class="form-group"> 
      <label for="name">Name</label> 
      <input class="form-control" type="text" name="name" id="name"/> 
     </div> 

     <div class="form-group"> 
      <label for="description">Description</label> 
      <textarea class="form-control" name="description"></textarea> 
     </div> 
    </form> 

Здесь я получаю АЯКС часть успеха в консоли!

$("#objectInsert").submit(function(e) { 
    e.preventDefault(); 
    resetErrors(); 
    var form = this; 
    var url = $(this).attr('action'); 
    var data = new FormData($(this)[0]); 
    $.ajax({ 
     type: 'POST', 
     url: url, 
     data: data, 
     dataType: 'json', 
     cahe:false, 
     processData: false, 
     contentType: false, 
     success: function(resp) { 
      console.log(resp);//Working 
     }, 
     error: function() { 
      console.log('there was a problem checking the fields'); 
     } 
    }); 
}); 

Здесь я получаю часть ошибки ajax в консоли! может кто-нибудь сказать мне, где я делаю неправильно?

$("#add_element").click(function(){ 
     $("#form2").dialog({ 
      modal:true, 
      width:400, 
      buttons:{ 
       Send:function(e){ 
        e.preventDefault(); 
        var form = $("#objectInsert"); 
        var url = form.attr('action'); 
        var data = new FormData(form[0]); 
        $.ajax({ 
         type: 'POST', 
         url: url, 
         data: data, 
         dataType: 'json', 
         cahe:false, 
         processData: false, 
         contentType: false, 
         success: function(resp) { 
          console.log(resp);//not working 
         }, 
         error: function(xhr, status, error) { 
          console.log('there was a problem checking the fields'); 
          console.log(xhr); 
          console.log(error); 
         } 
        }); 
        return false; 

       }, 
       Cancel:function(){ 
        $(this).dialog("close"); 
       } 
      } 
     }); 
    }); 

Контроллер

public function create() { 
    try{ 
     $this->form = new Form(); 
     $this->form->post('name'); 
     $this->form->val('isEmpty', 'name'); 
     $this->form->post('description'); 
     $this->form->val('isEmpty', 'description'); 

     $this->form->fetch(); 
     $this->form->submit(); 

     $data = $this->form->get_postData(); 

     $this->model->insert($data); 

     echo json_encode('success'); 
    } catch (Exception $ex) { 
     $errors = $this->form->get_error(); 
     $_SESSION["errors"] = $errors; 
     //This is for ajax requests: 
     if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && 
       strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) 
       == 'xmlhttprequest') { 
      echo json_encode($_SESSION['errors']); 
      exit; 
     } 

     foreach ($_SESSION["errors"] as $errors){ 
      echo $errors; 
      echo '<br/>'; 
     }exit; 
    } 
} 
+2

Вы проверили причину ошибки в консоли? –

+0

Используйте параметры, которые передаются обработчику ошибок: ['Функция (jqXHR jqXHR, String textStatus, String errorThrown)'] (https://api.jquery.com/jquery.ajax/) – Andreas

+0

Спасибо за этот совет. Я добавил обработчик ошибок. выдается ошибка: «SyntaxError: JSON.parse: неожиданный символ в строке 1 столбца 1 окна возврата данных JSON.JSON.parse (data +« »); Это console.log (ошибка); line – Prosp

ответ

-1

увидеть этот код, вы не закрыли то функциональный блок

success: function(resp) { 
     console.log(resp);//not working 
     },//This is not closed for success function 
error: function() { 
     console.log('there was a problem checking the fields'); 
     } 
+0

Это не единственный недостающий скобок в коде ... – Andreas

+0

Ohh Извините !, Мой взгляд поймал это первым. :) –

+0

нужна запятая также – charlietfl

Смежные вопросы