【问题标题】:HTML Form Redirect After Submit提交后的 HTML 表单重定向
【发布时间】:2013-07-26 12:11:38
【问题描述】:

这是我的表单代码:

<form enctype="multipart/form-data" name="upload-file" method="post"  action="http://example.com/upload">
    <div class="formi">
        <input id="text-link-input" type="text" name="url" class="link_form" value="your link"  onfocus="if(this.value==this.defaultValue) this.value='';" onblur="if(this.value=='') this.value=this.defaultValue;"   />
        <input type="submit" value="OK" class="link_but" />
    </div>
    <div class="upl" title="Upload"><img src="http://example.com/example.png" alt="" style="vertical-align:middle;"/>Upload
        <input type="file" name="file" size="1" class="up" onchange = "document.getElementById('text-link-input').value = String(this.value).replace('C:\\fakepath\\','')"/>
    </div>
</form>

现在,我想在提交表单数据后将提交者重定向到我选择的任何页面,但该操作位于另一个我无法编辑的网站上。用户将数据提交到该站点后,是否可以将其重定向到任何页面?

通过谷歌搜索,这是我发现的。将此添加到表单代码中:

onSubmit=window.location='http://google.com'

这没用。也许我没有正确实施?这就是我所做的:

<form enctype="multipart/form-data" name="upload-file" method="post" onSubmit=window.location='http://google.com' action="http://example.com/upload">

另一个人说添加隐藏字段应该可以:

<input type="hidden" name="redirect" value="http://your.host/to/file.html"> 

我应该如何实现这是我的代码?

等待建议和帮助...

【问题讨论】:

  • 当您可以控制将处理您的脚本的表单时,隐藏字段将起作用,在您的情况下,您没有控制权,因此它不会起作用
  • 表单第一次点击将采取行动,在行动中,您传递example.com/upload,表单将转到该网址
  • @Vickey 是的,它转到 example.com/upload,但我希望它向 example.com/upload 提交数据,然后转到其他页面。但是,我根本无法编辑 example.com/upload 来添加重定向。还有什么办法吗?
  • 好的,当你被定向到 example.com 时,在 example.com 上添加重定向代码,这样它就会转到你指定的 url 你说你无法编辑 example.com,因为虚拟链接尝试使用你的服务器中的文件,您可以像 mail.php 和任何其他名称进行编辑
  • 肯定地说我无法编辑 example.com 我的意思是我无法编辑驻留在另一个网站上的 Action url。基本上,我正在尝试使用他们的提交 php 将文件从我网站上的表单上传到另一个网站。我知道我正在尝试通过在 iFrame 或 AJAX 中加载操作页面来完成,但我不确定要这样做。

标签: html forms


【解决方案1】:

试试这个 Javascript (jquery) 代码。它是对外部 URL 的 ajax 请求。使用回调函数触发任何代码:

<script type="text/javascript">
$(function() {
  $('form').submit(function(){
    $.post('http://example.com/upload', function() {
      window.location = 'http://google.com';
    });
    return false;
  });
});
</script>

【讨论】:

  • 想知道为什么这被否决了吗?看起来对我来说是正确的方法(假设 OP 愿意使用 jQuery)。可能需要在该提交处理程序中使用return:false;...
  • 这是我看完这个问题后想到的第一个解决方案。但后来看到它已经回答了。 +1
  • 如果您还想发送表单值,请添加$('#form_id').serialize() 之类的内容作为要发布的第二个参数(在 URL 之后)。
  • 鉴于相同的来源策略,这不太可能适用于 OP 无法控制的大多数 URL。
猜你喜欢
  • 1970-01-01
  • 2013-04-13
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
相关资源
最近更新 更多