0

我想要做什么 -
我正在尝试创建一个页面,在其中您有一个客户列表,您选择一个,然后 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>

我也试过把它放在后面的两条 'var' 行// load() functions

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

浏览器 -
谷歌浏览器

4

1 回答 1

1

我现在知道我之前哪里出错了。这应该可以解决问题。

您需要进入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");
});
于 2013-10-16T16:54:24.263 回答