2011-07-05 49 views
1

我有一个表单。它由文本区域和选择框组成。 我想将它提交给服务器端。 以下是前端代码。 后端代码只有一个句子:“print_r($ _POST);”。它打印出填充和选择的数据用户。 问题是我可以看到数据用户填满但我无法在选择框中看到数据。 例如,我想看看:jquery提交选择框

Array ([name] => hello [email] => ***@hotmail.com [list] => NYC) 

但是这只能说明:

Array ([name] => hello [email] => ***@hotmail.com) 

这就是说,它不能显示在选择框中的数据。

<form name="contact", action="ajax.php" method="POST"> 
    <fieldset> 
     <label for="name" id="name_label">Name</label> 
     <input type="text" name="name" id="name" size="30" value="" class="text-input" /> 

     <label for="email" id="email_label">Email</label> 
     <input type="text" name="email" id="email" size="30" value="" class="text-input" /> 

     <select id="list" > 
     <option></option> 
     <option value="NYC">NYC</option> 
     <option value="USA">USA</option> 
     </select> 

    <input type="submit" id="submit" value="Send" /> 
    </fieldset> 
    </form> 

<script type="text/javascript" src="http://ajax.microsoft.com/ajax/jquery.validate/1.7/jquery.validate.min.js"></script> 
<script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script> 
<script> 
$(function() { 
    $('#submit').click(function() { 
     // validate and process form here 
    $('.error').hide(); 
     var name = $("input#name").val(); 
     var email = $("input#email").val(); 
     var list = $("select#list").val(); 

     var dataString = 'name='+ name + '&email=' + email + '&list=' + list; 
     alert(dataString); 
     $.ajax({ 
     type: "POST", 
     data: dataString, 
     url : "ajax.php", 
    }); 
    }); 
    }); 

</script> 
+0

如果您的代码没有出现在预览中,请使用代码格式。 – alex

+0

您应该设置选择标签的名称attr – Joe

+0

@JoeTuskan:OP通过XHR发送数据。 – alex

回答

1

您的代码似乎没有任何错误,但是,创建params列表本身是多余的。

您可以简单地将该表格与$('form[name="contact"]').serialize()连用。

但是,如果您要提交除XHR外的此表单,则需要为select元素提供一个name属性。

此外,如果您打算通过XHR 正常提交,我会阻止提交默认事件并在您的XHR成功时调用submit()。否则,请求可能无法完成。

+0

我试图添加名为属性的位置。 var list = $(“select#list”)。attr(“location”);我使用alert(dataString)来显示我是否可以获取正确的数据。奇怪的是它显示“list = undefined”。 – chnet

+0

你能否介绍一下防止默认事件? – chnet

+0

@chnet:['event.preventDefault()'](http://api.jquery.com/event.preventDefault/)。 – alex