2017-01-30 14 views
0

我有這樣的代碼,該數據值發送到我的服務器使用選擇和選項的JavaScript/jQuery的使用得到錯誤的數據值(本)。數據(「值」)

$("#choiceamountmonthly").change(function() { 
    var monthamountblock = $(this).data("value"); 
    alert("maandelijks pakket gekozen"); 

    $.getJSON(
     "server/ajax.php", 
     {request:"addMonthsToCart", MonthsToCart: monthamountblock}, 
     function (data) { 
      switch(data.response){ 
       case "success": 
        alert("Met succes toegevoegd"); 
        break; 
      } 
     } 
    ); 
}); 

這得到數據值。

<select id="choiceamountmonthly" data-value="1000" name="subscription_choice" title="subscription_choice"> 
    <option data-value="0" >-Kies het aantal maanden-</option> 
    <option data-value="3">3 maanden</option> 
    <option data-value="5">6 maanden</option> 
    <option data-value="9">12 maanden</option> 
</select> 

在我的代碼在這裏需要選擇的data-value所以它發送1000到我的服務器。但我想將data-value的選項發送到我的服務器。我怎樣才能做到這一點?

回答

1

你也可以只使用(而不是數據值)進行選擇選項:

<select id="choiceamountmonthly" 
     data-value="1000" 
     name="subscription_choice" 
     title="subscription_choice"> 
    <option value="0" >-Kies het aantal maanden-</option> 
    <option value="3">3 maanden</option> 
    <option value="5">6 maanden</option> 
    <option value="9">12 maanden</option> 
</select> 

比你能抓住它,像這樣:

var monthamountblock = $(this).val(); 

plunker:http://plnkr.co/edit/jtMdP3E2LJMBs6CzBzLQ?p=preview

+0

我個人認爲這是更好的方式,除非由於某種原因需要使用'data-value' ... –

+0

這工作謝謝你! – Joch1009

0

從我可以看到,你不需要選擇的數據值。 這似乎是重寫選項的數據值。 選擇應該只需要名稱,沒有價值。

IE:

`<select id="choiceamountmonthly" name="subscription_choice" title="subscription_choice"> 
    <option data-value="0" >-Kies het aantal maanden-</option> 
    <option data-value="3">3 maanden</option> 
    <option data-value="5">6 maanden</option> 
    <option data-value="9">12 maanden</option> 
</select> 
` 
+0

我已經嘗試過,但它不會發送任何值到服務器。 – Joch1009

+0

啊我錯過了jquery中的位,正如obisidian指出的那樣,你需要選擇'':selected''的值即 即。 '(this,':selected')。data(「value」);' –

2

相反的:

var monthamountblock = $(this).data("value"); 

你需要的是:

var monthamountblock = $(':selected', this).data("value"); 

這從選擇抓住所選擇的選項的數據,而不是選擇的數據本身。

希望這會有所幫助!

+3

這會引發語法錯誤。我認爲你的意思是'$(':selected',this)'。 –

+0

謝謝,基本上我正在尋找'$(「#choiceamountmonthly:selected」);'。我只是假設,如果你使用'this',它會以同樣的方式處理':selected'。我已更新我的代碼以糾正此問題:) –

+0

仍然不正確。你不會在一個字符串中放入'「:selected」'。請在發佈之前嘗試在瀏覽器中運行您的代碼。 –

相關問題