如果我使用jQuery或JavaScript做一个帖子,我怎样才能使它目标的iframe,而不是当前页面?
jQuery.post(
url,
[data],
[callback],
[type]
)
这是jQuery的岗位的格式,它似乎并不仿佛有任何地方来指定目标好像有在<form>
标签。
有任何想法吗?
如果我使用jQuery或JavaScript做一个帖子,我怎样才能使它目标的iframe,而不是当前页面?
jQuery.post(
url,
[data],
[callback],
[type]
)
这是jQuery的岗位的格式,它似乎并不仿佛有任何地方来指定目标好像有在<form>
标签。
有任何想法吗?
您可以通过常规的形式做到这一点:
<form action="targetpage.php" method="post" target="iframename" id="formid">
<input type="hidden" name="foo" value="bar" />
</form>
然后,您可以使用jQuery提交表单:
$("#formid").submit();
也许你缺少一个AJAX请求的地步 - 为什么你想指定一个异步请求的“目标”? 这是没有意义,因为AJAX的整点是,从服务器的请求被发回给Javascript,免费重新加载页面或HTML目的地。
如果你想加载请求到一个iframe的结果,你可以这样做:
$.post('myurl', function(data) {
$('#myframe').html(data);
}, 'html');
您可以通过动态地创建表格并追加到体解决了没有 - 成型 - 允许中之形式问题。 所以,你会做这样的事情:
$().ready(function() {
$('body').append('<form
action="url"
method="post"
target="iframename"
id="myspecialform">
<input type="hidden" name="parameter" value="value" />
</form>');
});
这将创建一个囊括了页面上的其他主要形式之外的iframe的更新形式。 然后,只需把它作为乔希推荐: $('#myspecialform').submit();
。
这里是我如何与普通的HTML的JavaScript做到了:
var form=$("<form/>").attr({
method: "post",
action: "iframe.php",
target: "list_frame"
});
form.append($("<input/>").attr({name:"field1",value:0}));
form.append($("<input/>").attr({name:"field2",value:1}));
form.append($("<input/>").attr({name:"field3",value:2}));
form.append($("<input/>").attr({name:"field4",value:3}));
form.append($("<input/>").attr({name:"field5",value:4}));
$("body").append(form);
form.submit();
我知道这个问题是旧的,但这里是我做到了在ASP.Net使用jQuery(C#)。
//Create the form in a jQuery object
$("<form action='/FormPostTo.aspx' method='post' target='nameofframe'></form>")
//Get the value from the asp textbox with the ID txtBox1 and POST it as b1
.append($("<input type='hidden' name='b1' />").attr('value',$('#<%= txtBox1.ClientID %>').val()))
//Get the value from the asp textbox with the ID txtBox2 and POST it as b2
.append($("<input type='hidden' name='b2' />").attr('value',$('#<%= txtBox2.ClientID %>').val()))
//Add the form to the body tag
.appendTo('body')
//Submit the form which posts the variables into the iframe
.submit()
//Remove the form from the DOM (so subsequent requests won't keep expanding the DOM)
.remove();
只是一个快速注:我不喜欢的是,输入标签,而不是连接它们,如果文本框的值有一个引号( '
)在其中。 如果级联它,它会搞砸HTML,它不会正确解析。
此外,这将删除DOM后,它被使用,因此你不要,如果你邮寄到的iFrame多次与表单元素填补了DOM形式。
一个细微的变化,你可以做,将是如果不存在,那么仅仅通过ID,如果它已经存在引用并重复使用它来创建表单元素。
下面是我做得到,当我需要通过最理想的是采用AJAX / jQuery的形式提交数据到远程页面asp.net页面上的表单中有一个形式问题。
我创建的变量捕捉asp.net表单名称,目标,措施,方法,等等。
我从这些变量的形式,认为信息,然后使用jQuery做什么,我需要它做的事改变了形式本身。
然后我张贴通过AJAX的形式(因为我需要一个形式张贴到一个单独的页面动态所以其他页面可以得到的信息)。
最后,我改变了asp.net的形式返回到它是如此的页面的其余部分能够正确的工作方式。
这似乎已经解决了我需要一个类似的解决方案。
你错过了AJAX的地步。 如果你想发布的东西一个iframe,你可以通过一个简单的形式,发布由JavaScript或通过通常的方式做到这一点:一个提交按钮。