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

Mat*_*att 27 javascript ajax iframe jquery

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

jQuery.post( 
    url, 
    [data], 
    [callback], 
    [type] 
) 
Run Code Online (Sandbox Code Playgroud)

这是jQuery帖子的格式,似乎没有任何地方像<form>标签中那样指定目标.

有任何想法吗?

Jos*_*osh 30

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

<form action="targetpage.php" method="post" target="iframename" id="formid">
   <input type="hidden" name="foo" value="bar" />
</form>
Run Code Online (Sandbox Code Playgroud)

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

$("#formid").submit();
Run Code Online (Sandbox Code Playgroud)

  • 你可以用你的主表格.使用jquery暂时更改操作,目标等的值,然后将其还原. (4认同)
  • 不能用表格做这个,我在.net上,你不能在表格中有表格 (2认同)

Pao*_*ino 5

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

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

$.post('myurl', function(data) {
    $('#myframe').html(data);
}, 'html');
Run Code Online (Sandbox Code Playgroud)

  • 我真的不在乎ajax.我想要的只是从其外部向iframe提交帖子,而无需用户点击提交按钮.我不能使用src将它们传递给iframe,因为它不是它想要的查询字符串参数.<form>标签允许我完全按照我想要的那样做,但是我在.net上,所以一切都包含在一个表单标签中,我无法使用target属性为自己创建一个新的表单标签.出于某种原因,当我使用您提供的代码时,不会调用任何内容.我试过替换#("#myframe").html(data); 警报("成功"); 没有运气. (7认同)

Ale*_*den 5

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

$().ready(function() {
    $('body').append('<form 
       action="url" 
       method="post" 
       target="iframename" 
       id="myspecialform">
         <input type="hidden" name="parameter" value="value" />
       </form>');
});
Run Code Online (Sandbox Code Playgroud)

这会在包含页面上其他所有内容的主表单之外创建 iframe 更新表单。然后就按照乔希推荐的那样称呼它:$('#myspecialform').submit();.


Chr*_*mas 5

这是我在 javascript 中使用纯 html 实现的方法:

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();
Run Code Online (Sandbox Code Playgroud)