我正在尝试将浏览器定向到其他页面.如果我想要一个GET请求,我可能会说
document.location.href = 'http://example.com/q=a';
Run Code Online (Sandbox Code Playgroud)
但是我试图访问的资源不会正常响应,除非我使用POST请求.如果这不是动态生成的,我可能会使用HTML
<form action="http://example.com/" method="POST">
<input type="hidden" name="q" value="a">
</form>
Run Code Online (Sandbox Code Playgroud)
然后我只需从DOM提交表单.
但实际上我想要允许我说的JavaScript代码
post_to_url('http://example.com/', {'q':'a'});
Run Code Online (Sandbox Code Playgroud)
什么是最好的跨浏览器实现?
编辑
对不起,我不清楚.我需要一个改变浏览器位置的解决方案,就像提交表单一样.如果使用XMLHttpRequest可以实现这一点,那就不明显了.这不应该是异步的,也不应该使用XML,所以Ajax不是答案.
我发现以下asp.net代码在从数据库提供文件时非常有用:
Response.AppendHeader("content-disposition", "attachment; filename=" + fileName);
Run Code Online (Sandbox Code Playgroud)
这允许用户将文件保存到他们的计算机,然后决定如何使用它,而不是尝试使用该文件的浏览器.
使用内容处置响应标头还可以做些什么?
http httpresponse httpwebresponse content-disposition http-headers
我需要向iframe发送一个值.
iframe存在于当前窗口中.我怎样才能做到这一点?
我需要在包含iframe的父窗口中使用javascript.
我试图使用javascript创建一个iframe元素,如下所示:
var iframe = document.createElement('iframe');
iframe.setAttribute('name', 'frame_x');
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用新创建的iframe作为目标提交表单时,IE会打开一个新窗口,而不是使用iframe.
form.setAttribute('target', 'frame_x');
form.submit();
Run Code Online (Sandbox Code Playgroud)
这在Firefox中完美运行.此外,iframe已创建,但未使用.
我必须使用POST方法将一些参数发送到IFRAME.我在这里阅读设置<iframe>的HTTP请求类型是不可能的.我正在考虑使用Javascript中的解决方案,但我无法实现它,因此我无法测试它是否是此问题的有效解决方案.我想问一下是否有人有同样的问题,如果有可能解决,在积极的情况下怎么办?
我正在调试我们的文件上传脚本,它在不支持通过XMLHttpRequest对象发送文件数据的浏览器中使用隐藏的iframe.
关于在IE中提交iframe的文章和问题过多; (比如这篇文章和这篇文章),但他们都引用了IE不能为你正确设置'name'属性这一事实.
下面的代码生成一个表单,其目标设置为iFrame的名称,但在提交表单时,IE9仍然提示我"你想打开还是保存photo_upload.json?",而不是将其加载到iFrame中.
var $iframe = $("<iframe id='" + id + "' name='" + id + "' />");
$('body').append($iframe);
$iframe.load(function () {
console.log("loaded"); // this never happens in IE9
});
// pretend this form also has a file input object that gets populated
var $form = $('<form />').attr({
method: "post",
enctype: "multipart/form-data",
action: "/photo_upload.json",
target: id
});
$('body').append($form);
$form.submit();
Run Code Online (Sandbox Code Playgroud)
此代码适用于FF和Chrome,但在IE9中,系统会提示您打开或保存" photo_upload.json ".如果我打开文件,IE9获得的响应是准确的.
有没有人有任何见解?是否有任何我缺少的iframe提交要通过?我是否需要设置某种标题来告诉IE不要这样打开它?谢谢!
感谢@Kolink为我解决了这个问题的代码.
Rails服务器端代码,在photo_upload函数中:
if params[:from_iframe]
render :json => @temp_photo, :content_type …
Run Code Online (Sandbox Code Playgroud) 我有一个指向moodle网站的iframe.我需要传递我的用户名和密码,以便在加载iframe时,我会自动登录moodle.所以我有这样的事情:
<div id="iframe" style="width:787px; height:700px;">
<iframe id="iframeCon" src ="http://www.somesite.net/moodle/login/index.php"
width="100%" height="100%" frameborder="0">
</iframe>
</div>
Run Code Online (Sandbox Code Playgroud)
我的问题是如何使用POST方法将我的用户名和密码发送到此URL?
我有一个FaceBook应用程序.
有没有办法用JavaScript获取signed_request?
使用PHP它看起来像这样:$_REQUEST['signed_request']
但我不能使用PHP.
是否可以使iframe使用POST而不是GET请求?我不是试图将表单发布到iframe中,而是根据服务器上生成的数据加载iframe.
不幸的是,我不能在这种情况下使用Javascript(因为公司的政策是必须在没有JS的情况下结账).
我有这个HTML:
<form action='uploadhandle.php' method='POST' enctype="multipart/form-data">
<input type='file' class='fileinput' id='photo1' name='photo1'>
<input type='button' id='upload1' name='upload1' value='Upload'>
</form>
Run Code Online (Sandbox Code Playgroud)
我的jquery代码是:
$('#upload1').click(function(){
$.ajax({
url: "uploadhandle.php",
data: 'photo1='+photo1,
success: function(data){$('#result_div').html(data)}
});
Run Code Online (Sandbox Code Playgroud)
在我的uploadhandle.php中,当我尝试显示$ _POST ['photo1']时,没有任何内容出现,它是"未定义的".有谁知道我做错了什么?
非常感谢,问候
iframe ×6
javascript ×5
html ×3
http ×3
forms ×2
jquery ×2
post ×2
facebook ×1
file ×1
http-headers ×1
httpresponse ×1
moodle ×1
php ×1
submit ×1
upload ×1