2011-03-16 147 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