我有以下HTML:
<form action='.' method='post'>{% csrf_token %}
<div class="parameters">
Show
<select name="earnings_filter">
<option value="all">Total earnings</option>
<option value="hd">HD earnings</option>
<option value="sd">SD earnings</option>
</select>
<input type="submit" name="submit" class="submit float-right" value="submit" id="submit_financials"/>
</div>
</form>
我需要对此进行ajax调用,我正在触发:
$("#submit_financials").live('click', function(){
...
});
有没有办法获取在POST中提交的变量,例如选择了哪个选项(并且我需要获得大约10个其他变量)。或者我是否需要使用jQuery选择器来获取每个的值?
答案 0 :(得分:3)
$("#submit_financials").live('click', function(){
$.ajax({
url: '', // script url to send
method: 'POST', // method of sending
data: $('form').has(this).serialize(), // .serialize() make query string with form inputs name and value
dataType:'json', // expected data format returned from server, you may have something else
success: function(response) {
// response contains data returned from server
}
});
});
如果您使用的是jQuery&gt;最好将live()
替换为.on()
。 1.7如果可能的话会更好。所以你可以写它
$("#container").on('click', '#submit_financials', function(){
$.ajax({
url: '', // script url to send
method: 'POST', // method of sending
data: $('form').has(this).serialize(), // .serialize() make query string with form inputs name and value
dataType:'json', // expected data format returned from server, you may have something else
success: function(response) {
// response contains data returned from server
}
});
});
此处#container
指向页面加载时属于DOM的#submit_financials
持有者。
答案 1 :(得分:1)
如果所有值都在表单上的输入元素中......
$("#formId").serialize()
答案 2 :(得分:1)
您可以serialize
表单并发送到服务器页面
$.post("yourServerPage.php", $("form").serialize(),function(data){
//Do whatever with the result from ajax server page.
});
答案 3 :(得分:0)
如何创建隐藏式
类型的多个输入值<input type="hidden" id="sample_id" value="SOMETHING" />
给他们ID并使用以下内容访问内部数据:
$('#sample_id').val()
答案 4 :(得分:-1)
不幸的是,POST变量在请求中从客户端传递到服务器,但它们不会自动包含在从服务器返回客户端的响应中。这是使它们与GET变量区别开来的事情之一。
如果您的数据不是太长,您可能需要切换到GET方法。然后,您可以使用此问题中列出的函数检索变量:How can I get query string values in JavaScript?
或者,如果您有权访问服务器端代码,则可以在返回的HTML中包含这些变量;但这完全是另一个问题:)