2012-06-04 46 views
0

可能重复:
how to get GET and POST variables with JQuery?如何获得POST变量的jQuery

我有以下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选择器来获取每个的值?

回答

2
$("#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> 1.7替换live().on(),它会是如果可能的话更好。所以,你可以把它写

$("#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点的#submit_financials持有者属于DOM在页面加载。

0

如何创建类型的多个输入值隐藏

<input type="hidden" id="sample_id" value="SOMETHING" /> 

给他们的ID和存取权限使用里面的数据:

$('#sample_id').val() 
+0

所有的输入都是由用户选择,但我怎么会把它们变成隐藏类型? – David542

+0

因此,您对某些服务器端语言没有任何权限?如果是这样 - 无法访问POST数据。 –

0

如果所有的值在表单上输入元素..

$("#formId").serialize() 
1

你可以serialize表格并发送到服务器页面

$.post("yourServerPage.php", $("form").serialize(),function(data){ 
    //Do whatever with the result from ajax server page. 
}); 
-1

不幸的是,POST变量在客户端到服务器的请求中传递,但它们不会自动包含在从服务器回到客户端的响应中。这是使它们与GET变量分开的东西之一。

如果您的数据不是太长,您可能需要切换到GET方法。然后,您可以使用此问题中列出的函数检索变量:How can I get query string values in JavaScript?

或者,如果您有权访问服务器端代码,则可以在返回的HTML中包含这些变量;然而,这完全是另一个问题:)