2012-06-09 38 views
0

我想发布一个表单并使用javascript将变量保存在变量中。
这里是我的代码:
在Javascript中的变量中存储邮件响应

<script type="text/javascript"> 
function submitform() 
{ 
    document.forms["myform"].submit(); 
} 
</script> 

<form id="myform" action="url" method="post" target="iframe"> 
<input type="hidden" name="arg" value="value"> 
<a href="javascript: submitform()">Go</a> 
</form> 
<iframe name="iframe"></iframe> 



如果我运行此代码响应将在iframe中显示。但在某些情况下,加载后iframe页面将重定向到源代码。我搜查了很多地方停止重定向发生,但没有找到任何方法!
我刚刚找到一种方式加入这段JavaScript代码:

window.onbeforeunload = function(){ 
      return false; 
     }; 

但这种方式是烦人,因为它显示了一个对话框时重定向,我不能要求用户点击,每一次!
所以我选择了一种方法来在浏览器中不加载响应html代码,使得重定向!而不是在变量中保存响应并删除脚本,然后打印它!

有什么办法可以做到这一点?

+0

这就是[Ajax](http://en.wikipedia.org/wiki/Ajax)的用途。看看https://developer.mozilla.org/en/AJAX/Getting_Started。 –

回答

0

您可以使用JavaScript来发布帖子请求,而不是使用表单。在这种情况下,只要您发布到同一个域名,就可以轻松捕获响应。 (出于安全原因,跨域帖子不提供返回值)。关于如何使用javascript发布,请参阅JavaScript post request like a form submit

+0

如果我使用这种方法,用户将被重定向到任何地方post url,我不希望这样!我只是想使用响应,并防止用户看到 – Hossein

+0

你基本上是在试图破解一些东西或实现一个问题的不正确的解决方案。如果你想发布到一个你无法控制的网络服务器,那么没有一些黑客攻击就无法工作。如果你控制服务器,谷歌“JSONP”或“来源访问标题”。 – naugtur

1

您正在编码角落。使用jQuery和它的.ajax方法。将返回的标记放入div中而不是iframe。

+0

我测试了它,但它不工作! ajax不适用于域之外的域!它只适用于主要的域名地址。 – Hossein

+0

@Hossein这是正确的,它必须是这样。跨域沟通是另一回事。正确使用'$ .post'或'$ .ajax'可以调用同一个域名,并且在您明白开始寻找标记为跨域或跨域的解决方案后 – naugtur

1

你应该看看jQuery's AJAX function,它非常灵活和易于使用。或者,更简单的话,试试jQuery Form Plugin,它基本上可以自动化与窗体相关的所有事情。你所要做的就是指出表格,并告诉你在提交表格之前和/或之后要做什么。

+0

我测试了它,但它不起作用! ajax不适用于域之外的域!它只适用于主要的域名地址。 – Hossein

+0

冷静下来,我们听到你。 AJAX不支持跨域,这很明显。如果你想这样使用它,请阅读JSONP。大卫·沃尔什在他的[博客](http://davidwalsh.name/jsonp)上写得很好。 –