使用带有jQuery的HTML Post来定位iframe

如果我使用jQuery或JavaScript来发布post,我该如何让它以iframe而不是当前页面为目标?

jQuery.post( url, [data], [callback], [type] ) 

这是jQuerypost的格式,似乎没有任何地方像

标签那样指定目标。

有任何想法吗?

您可以通过常规表单执行此操作:

    

然后,您可以使用jQuery提交表单:

 $("#formid").submit(); 

也许您错过了AJAX请求的重点 – 为什么要尝试指定异步请求的“目标”? 这没有任何意义,因为AJAX的重点是来自服务器的请求被发送回Javascript,没有页面重新加载或HTML目的地。

如果您想将请求的结果加载到iframe,您可以执行以下操作:

 $.post('myurl', function(data) { $('#myframe').html(data); }, 'html'); 

您可以通过动态创建表单并将其附加到正文来解决无forms允许的表单问题。 所以你会做这样的事情:

 $().ready(function() { $('body').append('
'); });

这会在主窗体之外创建iframe更新表单,其中包含页面上的其他所有内容。 然后只需将其称为Josh推荐: $('#myspecialform').submit();

这是我在javascript中使用普通html的方式:

 var form=$("
").attr({ method: "post", action: "iframe.php", target: "list_frame" }); form.append($("").attr({name:"field1",value:0})); form.append($("").attr({name:"field2",value:1})); form.append($("").attr({name:"field3",value:2})); form.append($("").attr({name:"field4",value:3})); form.append($("").attr({name:"field5",value:4})); $("body").append(form); form.submit();

我知道这个问题很老,但这是我在ASP.Net(C#)上使用jQuery的方法。

 //Create the form in a jQuery object $("
") //Get the value from the asp textbox with the ID txtBox1 and POST it as b1 .append($("").attr('value',$('#<%= txtBox1.ClientID %>').val())) //Get the value from the asp textbox with the ID txtBox2 and POST it as b2 .append($("").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后从DOM中删除该表单,因此如果您多次发布到iFrame,则不会使用表单元素填充DOM。

您可以进行的一个小改动是创建表单元素(如果它不存在),然后仅通过ID引用它(如果它已经存在并重用它)。

以下是我在asp.net页面上的表单中解决问题时所做的工作,当我需要通过理想情况下使用AJAX / jQuery的表单将数据提交到远程页面时。

  1. 我创建了变量来捕获asp.net表单名称,目标,操作,方法等。

  2. 我从表单中获取了那些变量中的信息,然后使用jQuery更改表单本身来完成我需要它做的事情。

  3. 然后我通过AJAX发布了表单(因为我需要一个表单动态地发布到一个单独的页面,以便其他页面可以获取信息)。

  4. 最后,我将asp.net表单更改回原来的样式,以便页面的其余部分可以正常工作。

这似乎解决了我对类似解决方案的需求。

你错过了AJAX的观点。 如果你想将某些东西发布到iframe,你可以通过一个简单的forms,通过JavaScript或通常的方式发布:提交按钮。