2015-12-15 2 views
1

Я создаю объект json, в котором я вынимаю поля из формы, а затем с помощью jquery Ajax POST для отправки данных. Но когда я вижу свою вкладку в сети после нажатия кнопки submit, я получаю заголовки json, но все значения, которые должны были быть извлечены из формы, пусты, за исключением значений, которые я жестко кодирует. Обратите внимание, что мои данные json также имеют вложенный json типа комнаты.Невозможно отправить данные json с jquery из значений формы

Ниже моя JQuery часть: -

var formData={ 
     "checkInDate": $("#checkInDate").val(), 
     "checkOutDate": $("#checkOutDate").val(), 
     "roomsWanted":$("#roomsWanted").val(), 
     "room":{ 
      roomType: $("input[name=roomType]:checked").val(), 
      roomProperty:"non-smoking" 
     } 

    }; 
$("#checkAvailabilityForm").submit(function(e){ 
     e.preventDefault(); 

     $.ajax({ 
      type: 'post', 
      url: '', 
      dataType: 'json', 
      data: JSON.stringify(formData), 
      contentType: 'application/json', 
      success: function(dataRecieved){ 
       var dataRecieved= $.trim(dataRecieved); 
       if(dataRecieved === ''){ 

       }else{ 

       } 
      } 

     }); 
    }); 

ответ

1

Перемещайте декларацию formData внутри функции .submit(). То, как у вас сейчас, загружается страница, а затем var formData = ... сразу устанавливает значение для formData (к значениям новой пустой формы).

Ваш код должен выглядеть следующим образом:

$("#checkAvailabilityForm").submit(function(e){ 
    e.preventDefault(); 

    var formData={ 
     "checkInDate": $("#checkInDate").val(), 
     "checkOutDate": $("#checkOutDate").val(), 
     "roomsWanted":$("#roomsWanted").val(), 
     "room":{ 
      roomType: $("input[name=roomType]:checked").val(), 
      roomProperty:"non-smoking" 
     } 
    }; 

    $.ajax({ 
     type: 'post', 
     url: '', 
     dataType: 'json', 
     data: JSON.stringify(formData), 
     contentType: 'application/json', 
     success: function(dataRecieved){ 
      var dataRecieved= $.trim(dataRecieved); 
      if(dataRecieved === ''){ 

      }else{ 

      } 
     } 

    }); 
}); 
+0

спасибо большое. такая простая ошибка. уже почти час царапал мне голову. –

+0

без проблем. пожалуйста, нажмите галочку, чтобы принять мой ответ – thedarklord47

0

Вам не нужно stringify ваш JSON просто мимо JSON, как это

data: formData

+0

Я сделал это, но он ничего не показывает, и infact не представляет его как json. Вот как я вижу это в консоли разработчика браузера, и значения, поступающие из формы, по-прежнему пусты. Похоже на это «checkInDate = & checkOutDate = & roomsWanted = & room% 5BroomProperty% 5D = некурящий» –

+0

на самом деле вы были правы, потому что у меня был объявлен var var submit, предложенный Dark Lord выше –

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