2011-03-16 121 views
1

我有一個註冊框,除此之外它不會將textfield值發送到我的php腳本 - .val()是正確的功能嗎?我知道這樣做可能有一百多個錯誤,但我會很感激任何輸入。使用jQuery獲取文本字段值

$(document).ready(function(){ 
       $("form#joinus").submit(function() { 
       var gender = $('#gender').attr('value'); 
       var age = $('#age').attr('value'); 
       var gamer = $('#gamer').attr('value'); 
       var name = $('#name').val(); 
       console.log("register AJAX input: " + "gender="+ gender +"& age="+ age +"& gamer=" + gamer +"& name=" + name); 
       var display = document.getElementById('feedback'); 
        $.ajax({ 
         type: "POST", 
         url: "scripts/register.php", 
         data: "gender="+ gender +"& age="+ age +"& gamer=" + gamer +"& name=" + name, 
         success: function(msg){ 
          $('form#joinus').hide(function(){$('div.success').fadeIn();}); 
          display.innerHTML = msg; 
         } 
        }); 
       return false; 
       }); 
      }); 

HTML:

form id="joinus" method="post" action=""> 
    <fieldset> 
     <table style="text-align: left"> 
      <tr><td>Gender:</td><td><select name="gender" id="gender"> 
       <option value="male">Male</option> 
       <option value="female">Female</option> 
      </select></td></tr> 
      <tr><td>Age:</td><td><select name="age" id="age"> 
       <option value="18">18</option> 
       <option value="19">19</option> 
       <option value="20">20</option> 
       <option value="21">21</option> 
       <option value="22">22</option> 
       <option value="23">23</option> 
       <option value="24">24</option> 
       <option value="25">25</option> 
       <option value="26">26</option> 
       <option value="27">27</option> 
       <option value="28">28</option> 
       <option value="29">29</option> 
       <option value="30">30</option> 
       <option value="31">31</option> 
       <option value="32">32</option> 
       <option value="33">33</option> 
       <option value="34">34</option> 
       <option value="35">35</option> 
       <option value="36">36</option> 
       <option value="37">37</option> 
       <option value="38">38</option> 
       <option value="39">39</option> 
       <option value="40">40</option> 
       <option value="41">41</option> 
       <option value="42">42</option> 
       <option value="43">43</option> 
       <option value="44">44</option> 
       <option value="45">45</option> 
       <option value="46">46</option> 
       <option value="47">47</option> 
       <option value="48">48</option> 
       <option value="49">49</option> 
       <option value="50">50</option> 
       <option value="51">51</option> 
       <option value="52">52</option> 
       <option value="53">53</option> 
       <option value="54">54</option> 
       <option value="55">55</option> 
       <option value="56">56</option> 
       <option value="57">57</option> 
       <option value="58">58</option> 
       <option value="59">59</option> 
       <option value="60">60</option> 
       <option value="61">61</option> 
       <option value="62">62</option> 
       <option value="63">63</option> 
       <option value="64">64</option> 
       <option value="65">65</option> 
       <option value="66">66</option> 
       <option value="67">67</option> 
       <option value="68">68</option> 
       <option value="69">69</option> 
       <option value="70">70+</option> 
      </select></td></tr> 
      <tr><td>Would you describe yourself as a "gamer"? (This refers to video games of any sort)</td><td><select name="gamer" id="gamer"> 
       <option value="yes">Yes</option> 
       <option value="no">No</option> 
      </select></td></tr> 
      <tr><td>Enter the name you would like to use for any highscores (this may be seen by other users)</td><td><input type="text" id="name" name="name" /> 
     </table> 
     <button class="button positive"> Submit </button> 
    </fieldset> 
</form> 
+1

是的,'val()'是正確的函數,但是你正在使用'.attr('value')'這是錯誤的。此外,您應該將一個對象傳遞給'data:',以便jQuery可以應用URL編碼:'data:{gender:gender,age:age,...}'。 – 2011-03-16 23:40:03

+0

如果你仔細觀察,我在名稱上使用val(),這是我遇到問題的字段。我感謝你的建議,關於傳遞一個對象而不是字符串。 – 2011-03-16 23:44:14

+0

@哈爾克萊夫:我見過它。你沒有說這是你有問題的領域(儘管這可以推斷出來)。你是否在'

回答

2

我已經試過你的代碼在一個測試項目,它工作正常。

但是,如果我再添加一個IDname的另一個元素,那麼我會得到您描述的行爲。

我建議你有相同的ID重複的元素。

+0

這正是問題 - Felix Kling在上面的評論中得出了同樣的結論。感謝:) – 2011-03-17 00:05:57

+0

很高興你把它排序 - 我發佈了我的答案後,我注意到菲利克斯的評論! @Felix Kling:我已經提高了你的評論,對不起,以竊取你的雷霆;) – Town 2011-03-17 00:09:34

+0

嘿嘿,不用擔心,你已經贏得了:) +1從我的正確答案。 – 2011-03-17 00:30:47

0

您不必關閉</td></tr>。我不認爲這是你確切的問題,但修復它不會有什麼傷害。

+0

好吧,發現了。我現在糾正了,但仍然沒有椰子。 – 2011-03-16 23:48:43

0

變化

data: "gender="+ gender +"& age="+ age +"& gamer=" + gamer +"& name=" + name, 

data: "gender="+ gender +"&age="+ age +"&gamer=" + gamer +"&name=" + name, 
+0

已修復,但仍然是解析。我確實認識到,儘管在這裏加入額外的角色沒有意義。 – 2011-03-16 23:47:59

+0

任何特定的瀏覽器?剛剛測試過,它在FF中正常工作。也可能是錯誤的PHP方面?檢查通過提琴手提交的值。 – 2011-03-16 23:59:28

+0

問題現在已經解決 - 我是一個白癡,忘記了另一個來自Facebook Connect的名爲「name」的元素。謝謝你的幫助! – 2011-03-17 00:08:18