Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/google-chrome/4.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 如何访问rails中form_标记的响应?_Javascript_Ruby On Rails_Ruby_Json - Fatal编程技术网

Javascript 如何访问rails中form_标记的响应?

Javascript 如何访问rails中form_标记的响应?,javascript,ruby-on-rails,ruby,json,Javascript,Ruby On Rails,Ruby,Json,我有一个表格,它在数据库中提交了许多信息。这个表格在一个模式弹出窗口中。单击submit标记时,将显示一个新的模式弹出窗口,其中有两个单击按钮,用于显示表单已提交的数据。 现在的问题是,当控制器调用完成时,这些按钮在单击时不会执行任何操作。 因此,我想在点击submit按钮的表单弹出窗口中添加一个微调器。当响应为真/成功时,将显示下一个弹出窗口 我的代码如下所示: form: = form_tag("/system/upload_form", method: 'post', enctype:

我有一个表格,它在数据库中提交了许多信息。这个表格在一个模式弹出窗口中。单击submit标记时,将显示一个新的模式弹出窗口,其中有两个单击按钮,用于显示表单已提交的数据。 现在的问题是,当控制器调用完成时,这些按钮在单击时不会执行任何操作。 因此,我想在点击submit按钮的表单弹出窗口中添加一个微调器。当响应为真/成功时,将显示下一个弹出窗口

我的代码如下所示:

form:

= form_tag("/system/upload_form", method: 'post', enctype:   'multipart/form-data', remote: true) do
    ...
    ...
    =submit_tag("Submit",id: "submit_button", class: 'btn btn-default')  



controller:

sys = @system.update!(system_params)
respond_to do |format|
  format.js
  format.json { render :json => sys }

js:

$("#submit_button").click(function() {
    $('#modal_define_system').modal('hide'); // current popup
    $('#next-page').modal('show'); // next popup
});
现在我想知道如何以及在哪里访问从控制器返回的json对象或sys值

我试过: 向窗体中添加一个类,然后

$('.form_class').bind('ajax:success', function() {
   console.log(sys);
});

但无法成功。请提供帮助和建议。如果需要添加更多的代码或解释,请进行注释。

您使用的是带有
remote true
的form
form_标签,它发送的ajax请求是js格式的,而不是json格式的。如果您在js块中呈现json响应,而不是像下面这样在控制器中呈现json响应,它应该可以工作

  respond_to do |format|
     format.js { render :json => sys } #this will be rendered 
     format.json { render :json => sys } #this won't
   end
或者,您可以像这样呈现javascript文件

$('#results_div').html("<%= @system.try(:title) %>")
$('#results_div').html(“”)
update.js.erb中


希望这能有所帮助。

您使用的是带有
remote true
的form
form_标记,它使用js格式而不是json格式发送ajax请求。如果您在js块中呈现json响应,而不是像下面这样在控制器中呈现json响应,它应该可以工作

  respond_to do |format|
     format.js { render :json => sys } #this will be rendered 
     format.json { render :json => sys } #this won't
   end
或者,您可以像这样呈现javascript文件

$('#results_div').html("<%= @system.try(:title) %>")
$('#results_div').html(“”)
update.js.erb中


希望这对您有所帮助。

扩展maximus的代码,您可以使用ajax提交可以 根据你的情况,对你来说更容易。你可以试试

     $("#theForm").ajaxSubmit({url: '/system/upload_form', 
     type: 'post'}).success(function(data){
     $('#newModalContainer').html(data);
     });
在控制器中,用提交的值呈现要显示的模式的html,这些值可以在实例变量中传递。 差不多

     def upload_form
      #your logic
      render :partial => 'new_modal_to_show'
     end

这是一个通用结构,您可以将其更改为相关值。希望对您有所帮助:-)

扩展maximus的代码,您可以使用ajax提交可以 根据你的情况,对你来说更容易。你可以试试

     $("#theForm").ajaxSubmit({url: '/system/upload_form', 
     type: 'post'}).success(function(data){
     $('#newModalContainer').html(data);
     });
在控制器中,用提交的值呈现要显示的模式的html,这些值可以在实例变量中传递。 差不多

     def upload_form
      #your logic
      render :partial => 'new_modal_to_show'
     end

这是一个通用结构,您可以将其更改为相关值。希望能有所帮助:-)

如果这听起来很愚蠢,那么很抱歉,但是我如何在update.js.erb中访问sys?您可以使用实例变量
@system
,因为您已经定义了它。如果这听起来很愚蠢,那么很抱歉,但是如何在update.js.erb中访问sys?您可以使用实例变量
@system
,因为您已经定义了它。这意味着我需要更改当前的实现??我在表格中添加了控制器链接,如果您可以。。。ajax单击提交按钮提交表单。并在同一页上获得响应,并在部分页面中显示。您也可以选择通过js格式响应提供的解决方案@maximus,并在那里设置变量。这意味着我需要更改当前的实现??我在表格中添加了控制器链接,如果您可以。。。ajax单击提交按钮提交表单。并在同一页上获得响应,并在部分页面中显示。您也可以使用js格式响应提供的solution@maximus,并在那里设置变量。