weixin_42362795 2010-04-09 21:12
浏览 170
已采纳

ajax更新后的元素为什么只能显示,不能POST提交

做了二级联动的选择,在页面能够正常选择,但是commit后只有开始显示的值可以被提交,用ajax更新后的变量就在POST参数中没有了?
哪里有问题啊?

[code="ruby"]
<%= javascript_include_tag "prototype" %>

<% form_for(:test,:act,:url=>{:action=>'done‘}) do |x| %>
<%= select(:id,:name, @names,{},{"onchange"=>remote_function(:with=>"'id='+value",
:update=>'number',:url=>{:action=>:get_number} ) } %>

<%= render :partial =>'get_number' %>

<%= submit_tag %>
<% end %>
[/code]

_get_number.erb
[code="ruby"]
<%= select(:id,:number,@numbers) %>
[/code]

在server的log上看到当页面出来后如果不动name的select,直接commit的话在POST的parameters可以发现{"id"=>{"number"=>"value"}}。

如果改变name的select, 那number的select的内容会通过ajax按照想要的变化,但是commit后在POST的parameters中就没有"id"=>"number"的变量了。与上一种情况相比少了一个变量。导致后继操作判断错误。
请教一下是哪里有问题啊?

  • 写回答

1条回答 默认 最新

  • hedahai119 2010-04-22 12:01
    关注

    建议不要用rails提供的 js helper 依赖性强 不好维护

    用jQuery 或 Prototype 自己写联动 也不是很难, 而且过程全透明 好维护

    [code="ruby"]



    Product:


    <%= select_tag 'p', options_for_select(@project_names) %>




    Component:



    <%= select_tag 'component', options_for_select(@component) %>


    [/code]
    [code="js"]
    [12:03:41] linux: $(function(){
    $('#p').change(function(){
    $('#next_select_component').html("");
    $('#next_select_version').html("");
    $.getJSON(
    '/bugzilla/select_with_ajax',
    {product_name:$('#p').val()},
    function(data){
    var components = data["component"];
    $.each(components,function(i){
    $(""+components[i]+"").appendTo($('#component'));
    });
    });
    });
    });
    [/code]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 关于logstash转发日志时发生的部分内容丢失问题
  • ¥17 pro*C预编译“闪回查询”报错SCN不能识别
  • ¥15 微信会员卡接入微信支付商户号收款
  • ¥15 如何获取烟草零售终端数据
  • ¥15 数学建模招标中位数问题
  • ¥15 phython路径名过长报错 不知道什么问题
  • ¥15 深度学习中模型转换该怎么实现
  • ¥15 Stata外部命令安装问题求帮助!
  • ¥15 从键盘随机输入A-H中的一串字符串,用七段数码管方法进行绘制。提交代码及运行截图。
  • ¥15 如何用python向钉钉机器人发送可以放大的图片?