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 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)