Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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
如何在Rails中执行控制器返回的javascript?_Javascript_Jquery_Ruby On Rails_Ajax - Fatal编程技术网

如何在Rails中执行控制器返回的javascript?

如何在Rails中执行控制器返回的javascript?,javascript,jquery,ruby-on-rails,ajax,Javascript,Jquery,Ruby On Rails,Ajax,我想上传一个图像,并显示它没有刷新 我知道的方法是使用隐藏的iframe并将表单的目标设置为它 然后从调用parent.func的控制器返回一段javascript以执行某些操作 但我的问题是: 除非前台知道数据类型是脚本,否则javascript似乎不会执行,例如: $.ajax { dataType:"script" } 但在提交表格时,我必须使用 $("...").submit() 因此,我无法指定数据类型 谁能告诉我该怎么办 或者你能告诉我实现目标的另一种方法: 在Rails

我想上传一个图像,并显示它没有刷新

我知道的方法是使用隐藏的iframe并将表单的目标设置为它

然后从调用parent.func的控制器返回一段javascript以执行某些操作

但我的问题是:

除非前台知道数据类型是脚本,否则javascript似乎不会执行,例如:

$.ajax {
    dataType:"script"
}
但在提交表格时,我必须使用

$("...").submit()
因此,我无法指定数据类型

谁能告诉我该怎么办

或者你能告诉我实现目标的另一种方法:


在Rails 3.2.0中上载图像并在不刷新的情况下显示。

尝试使用remotipart gem:


我这样做的方式是调用$..submit的调用代码将侦听隐藏的iframe上的加载事件,然后做出反应;而不是服务器返回自动运行的JavaScript

在iframe加载事件中,如果返回JSON,则可以将响应转换为JavaScript对象:

// assuming you have a DOM element with a variable of "iframe"
var doc = iframe.contentDocument ? iframe.contentDocument : iframe.contentWindow.document;
var response = eval("(" + doc.body.innerHTML + ")");
或者,在您的情况下,如果响应只是图像,那么您的加载回调可以将响应放入一个或其他您已经在页面上创建的元素中

您可能希望签出以下插件:

或者,如果您想利用HTML5的功能,可以使用更高级的插件:
我认为正确的答案是使用下面的代码

render :inline => '<script type="text/javascript">parent.callback(data)</script>'

非常感谢!。。我会试试你的建议!