Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/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 从iframe发送POST请求,提醒父窗口href_Javascript_Jquery_Ruby On Rails - Fatal编程技术网

Javascript 从iframe发送POST请求,提醒父窗口href

Javascript 从iframe发送POST请求,提醒父窗口href,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在构建一个Rails应用程序,但客户端也有一个wordpress组件 我希望能够允许用户从wordpress页面之一注册 为此,首先我将Rails中的x-iframe头设置为ALLOWALL 现在,注册过程可以工作了,但是在用户发出post请求之后,我希望基本窗口url更改为响应的任何内容 目前,我正在尝试这样做-> jQuery(function($) { var timesRun = 0; var original = "http://localhost:3000/m

我正在构建一个Rails应用程序,但客户端也有一个wordpress组件

我希望能够允许用户从wordpress页面之一注册

为此,首先我将Rails中的x-iframe头设置为ALLOWALL

现在,注册过程可以工作了,但是在用户发出post请求之后,我希望基本窗口url更改为响应的任何内容

目前,我正在尝试这样做->

  jQuery(function($) {
    var timesRun = 0;
    var original = "http://localhost:3000/mainsignup"

    $('#sign-up-iframe').load(function(e){
      timesRun += 1
      if (timesRun != 1) {
        $(e.currentTarget).addClass('hidden')
        window.location.href = "http://localhost:3000/signup?iframe_error=catch"
      }
    });
  });
这将要做的是,如果在这个iframe上两次调用load事件(可能是因为用户点击submit),我将更新顶部窗口的位置,以转到rails注册路径

在Rails结束时,如果注册成功,注册路径将自动重定向到用户的配置文件。否则,它将呈现signup视图,其中有一条基于params[:iframe_error]是否存在的通用错误消息


但这似乎是错误的,而且用户第一次并没有收到特定的错误消息。有更好的方法吗?

上述解决方案似乎是我迄今为止发现的最好的--

您让Rails处理正确的重定向,在第二次加载iframe之后,您重定向人员

 jQuery(function($) {
    var timesRun = 0;
    var original = "http://localhost:3000/mainsignup"

    $('#sign-up-iframe').load(function(e){
      timesRun += 1
      if (timesRun != 1) {
        $(e.currentTarget).addClass('hidden')
        window.location.href = "http://localhost:3000/signup?iframe_error=catch"
      }
    });
  });