Ajax将不会从选择下拉列表中选择选项

时间:2013-10-16 16:49:12

标签: jquery ruby-on-rails ajax

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

浏览器 -
谷歌浏览器

1 个答案:

答案 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");
});