我想做什么 -
我正在尝试创建一个页面,其中有一个客户列表,您选择一个,Ajax加载其信息的数据表。
我正在做什么 -
我通过散列我的客户端选择并尝试让Ajax在相关性中起作用来开始。
代码:
<% select_list = []
@clients.each do |f|
select_list << f.name
end
%>
<%= select_tag 'client', options_for_select(select_list) %>
<%= submit_tag 'Show', :id => "show" %><br/>
<div id="load-zone" style="width:500; height:300;">
</div>
<script type="text/javascript">
$.ajaxSetup ({
cache: false
});
var ajax_load = "<img class='loading' src='/images/load.gif' alt='loading...' width='40px' />";
// load() functions
var selID=document.getElementById("client");
var loadUrl=selID.options[selID.selectedIndex].text;
$("#show").click(function(){
alert(loadUrl);
$("#load-zone")
.html(ajax_load)
.load("/reports/ref_table_template?client=", loadUrl, "#data_table");
});
</script>
我也试过在// load() functions
之后代替两个'var'行:
var loadUrl = $("#client option:selected").text();
和
var loadUrl = $("#client").val();
我的期望 -
实际加载的页面是另一个问题,但是在那里有警报,我应该会看到一个消息窗口,其中显示了我从下拉列表中选择的客户端的名称。 IE,如果下拉包含[“Steve”,“Jim”,“Pete”],那么当我选择“Pete”并点击按钮时,我会得到一个也写着“Pete”的消息框。
我得到了什么 -
每次我点击提交按钮,无论我尝试什么方法,我都会得到“Steve”(第一个选项)。
如何更改此内容,以便loadUrl
实际包含所选项目?
系统规格 -
使用Ubuntu 12.04 LTS 64位
Ruby 1.8.7
Rails 3.0.20
浏览器 -
谷歌浏览器
答案 0 :(得分:1)
我现在看到我早先出错了。这应该可以解决问题。
您需要在click事件中获得loadUrl
。你在开始时得到它,所以得到第一个值,然后再没有得到它。每次单击#show
...
$("#show").click(function(){
loadUrl = $("#client").find(":selected").text();
alert(loadUrl);
$("#load-zone")
.html(ajax_load)
.load("/reports/ref_table_template?client=" + loadUrl, "#data_table");
});