2013-10-03 15 views
0

我工作的用戶購買產品前查看頁面上,頁面上是折扣碼,這是我想傳遞給端點的小場通過ajax。我使用下面的JavaScript函數,並且提交發生並返回(甚至碰到預期的端點) - 但沒有數據通過(在日誌中驗證)。AJAX表單提交擊中適當點,但沒有通過變量

任何想法,爲什麼沒有PARAMS將通過被獲得通過?

<script> 
    $("#discount_code_submit").click(function() { 

    var url = "/confirm_discount"; // the script where you handle the form input. 

    $.ajax({ 
      type: "POST", 
      url: url, 
      data: $("#discount_form").serialize(), // serializes the form's elements. 
      success: function(data) 
      { 
       alert(data); // show response 
       if(data != "false") 
       { 
        console.log(data); 
       } 
      } 
     }); 

    return false; // avoid to execute the actual submit of the form. 
}); 
</script> 

回答

1

這是因爲jQuery的serialize方法以傳統的url查詢字符串格式創建表單數據的String表示。 (請在這裏看到:http://api.jquery.com/serialize/
例如呼叫連載可以返回一個字符串,如:

'?query=help&numResults=200' 


。另一方面,jQuery的AJAX方法預計表單數據作爲對象常量來提供。 (請參閱:http://api.jquery.com/jQuery.ajax/
E.g.

{ 
    query: 'help', 
    numResults: 200 
} 

所以,你可以改變你的Ajax調用看起來像:

$.ajax({ 
     type: "POST", 
     url: url, 
     data: { 
      param1: 'somevalue', 
      param2: 200 
     }, 
     success: function(data) 
     { 
      alert(data); // show response 
      if(data != "false") 
      { 
       console.log(data); 
      } 
     } 
}); 

或者,你也可以使用自定義函數構造你的對象字面從表單,然後提供Ajax調用參考。

​​

你也可以使用http://api.jquery.com/serializeArray/因爲它幾乎就需要一種形式轉換成JSON文字表示什麼。

最後,在轉換形式JSON對象爲發佈商量好了,你可以在這裏看到的響應上的SO問題:Convert form data to JavaScript object with jQuery

+0

謝謝!這沒有工作 - 但奇怪的是,我不能使用美元符號選擇搶表單輸入的值來傳遞數據,但它通過document.getElementById工作...不知道爲什麼... –

+0

@AaronMarks - 如果您共享選擇器表達式,我可以說出它爲什麼沒有選擇任何東西。 – 2013-10-03 07:28:34