2015-12-15 54 views
1

我正在創建一個json對象,我從表單中抽取字段,然後使用jQuery Ajax POST發送數據。但是當我按提交後看到我的網絡選項卡時,我基本上得到了json頭文件,但是應該從表單中提取的所有值都是空的,除了我硬編碼的值。請注意,我的json數據也有一個類型爲room的嵌套json。無法從表單值jQuery數據發送json數據

下面是我的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

移動.submit()函數內你的formData聲明。您現在的方式是加載頁面,然後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

你並不需要字符串化您的JSON剛剛過去的JSON,因爲它

data: formData

+0

我已經這樣做了,但它沒有顯示任何內容,並且事實上並不代表它爲json。這是我在瀏覽器的開發者控制檯中看到它的方式,並且來自窗體的值仍然是空白的。看起來像這樣「checkInDate =&checkOutDate =&roomsWanted =&room%5BroomProperty%5D = non-smoking」 –

+0

其實你也是對的,因爲我已經聲明瞭外部提交的var –