Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript rails3触发ajaxsubmiton单选按钮更改为呈现html响应_Javascript_Ruby On Rails_Ajax_Forms - Fatal编程技术网

Javascript rails3触发ajaxsubmiton单选按钮更改为呈现html响应

Javascript rails3触发ajaxsubmiton单选按钮更改为呈现html响应,javascript,ruby-on-rails,ajax,forms,Javascript,Ruby On Rails,Ajax,Forms,轨道3形成局部 <%= form_for(answer, :remote => true) do |f| %> <% if answer.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(answer.errors.count, "error") %> prohibited this answer from being saved:&

轨道3形成局部

<%= form_for(answer, :remote => true) do |f| %>
  <% if answer.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(answer.errors.count, "error") %> prohibited this answer from being saved:</h2>
      <ul>
        <% answer.errors.full_messages.each do |msg| %>
            <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= f.hidden_field :conduct_evaluation_id, :value => conduct_evaluation.id %>
  </div>
  <div class="field">
      <%= f.hidden_field :question_id, :value => question.id %>
  </div>
  <div class="field">
    <%= f.hidden_field :program_block_id, :value => conduct_evaluation.program_block_id %>
  </div>
  <div class="field">
    <%= f.radio_button :answer, true, :onchange => "$(this.form).trigger('submit.rails');" %>yes<br/>
    <%= f.radio_button :answer, false, :onchange => "$(this.form).trigger('submit.rails');" %>no<br/>
  </div>
  <div class="actions">
    <%= f.submit "Answer" %>
  </div>
<% end %>
有人能告诉我,通过ajax提交javascript有什么不对吗?当我使用submit按钮时,请求通过ajax发送。如果我对单选按钮使用onchange事件并尝试通过javascript提交表单,它会认为请求是HTML

任何帮助都将不胜感激

-J

编辑: 因此,当我使用表单提交按钮时,请求略有不同:

Processing by AnswersController#create as JS
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"IcJkV1GnIOEGRs7kaRuVQsp0sTNtHQw0Q+HMM7m/mV0=", "answer"=>{"conduct_evaluation_id"=>"15", "question_id"=>"1", "program_block_id"=>"1", "answer"=>"true"}, "commit"=>"Answer"}
与使用onchange javascript触发rails.submit事件相比:

Processing by AnswersController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"IcJkV1GnIOEGRs7kaRuVQsp0sTNtHQw0Q+HMM7m/mV0=", "answer"=>{"conduct_evaluation_id"=>"15", "question_id"=>"1", "program_block_id"=>"1", "answer"=>"true"}}
有人知道为什么会发生这种情况吗?触发submit.rails事件时是否需要指定其他参数?请帮忙-D

编辑2: 所以我找到了一个解决办法。如果我将单选按钮的更改事件绑定到实际单击submit按钮,它就会工作。这不是理想的解决方案,但至少是可行的

编辑3: 我决定了以下咖啡脚本:

$(document).ready ->
    $('#my_form input:submit').hide()
    $('#my_form input:radio').change ->
        $.ajax
            type: $(this.form).attr('method')
            url: $(this.form).attr('action')
            data: $(this.form).serialize()
            dataType: 'script'
这允许相应的js操作文件作为响应返回,并在成功时自动执行。

使用
onchange()
绕过Rails magic,因此它不会按照您的意愿提交表单。编写自己的变更方法,例如:

$('input.radio_button_selector').change( function() {
    $.ajax({
        url: $('#my_form').attr('action'),
        data: $('#my_form').serialize()
    });
});

你问了一个关于javascript的问题,但你没有向我们展示你的javascript代码…javascript在单选按钮的:onchange参数中…哦,快照,我的错。什么是
submit.rails
this.form.submit()
有什么问题吗?有关submit.rails的良好演示,请参阅投票率最高的答案。我解决了这个问题:
$('#我的表单输入:radio').change->$.ajax类型:$(this.form)。attr('method')url:$(this.form)。attr('action')数据:$(this.form)。serialize()数据类型:“script”
注意这是在coffee脚本中,但它正确地呈现了我调用的操作的JS文件和相应的JS文件。谢谢你的信息,迈克!
$('input.radio_button_selector').change( function() {
    $.ajax({
        url: $('#my_form').attr('action'),
        data: $('#my_form').serialize()
    });
});