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]
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥30 Matlab打开默认名称带有/的光谱数据
  • ¥50 easyExcel模板 动态单元格合并列
  • ¥15 res.rows如何取值使用
  • ¥15 在odoo17开发环境中,怎么实现库存管理系统,或独立模块设计与AGV小车对接?开发方面应如何设计和开发?请详细解释MES或WMS在与AGV小车对接时需完成的设计和开发
  • ¥15 CSP算法实现EEG特征提取,哪一步错了?
  • ¥15 游戏盾如何溯源服务器真实ip?需要30个字。后面的字是凑数的
  • ¥15 vue3前端取消收藏的不会引用collectId
  • ¥15 delphi7 HMAC_SHA256方式加密
  • ¥15 关于#qt#的问题:我想实现qcustomplot完成坐标轴
  • ¥15 下列c语言代码为何输出了多余的空格