【发布时间】:2011-09-19 23:41:52
【问题描述】:
我刚刚(艰难地)发现您无法对另一个域进行 ajax 调用。
我读过 iFrames(仅适用于 IE6)和跨域 xml 请求(仅适用于 ie8 及更高版本)
那么还有其他方法吗? 我基本上只需要发送数据到另一个服务器,而不是接收它。
【问题讨论】:
标签: ajax internet-explorer cross-domain
我刚刚(艰难地)发现您无法对另一个域进行 ajax 调用。
我读过 iFrames(仅适用于 IE6)和跨域 xml 请求(仅适用于 ie8 及更高版本)
那么还有其他方法吗? 我基本上只需要发送数据到另一个服务器,而不是接收它。
【问题讨论】:
标签: ajax internet-explorer cross-domain
听起来您需要使用服务器端代理脚本。即对(例如)PHP 脚本的 AJAX 请求,该脚本将为您发出 HTTP/cURL 请求。
【讨论】:
JSONP 可能是您需要的。有很多例子。 这是一个很好的: http://www.ibm.com/developerworks/library/wa-aj-jsonp1/
【讨论】:
我应该澄清一下:我不想使用(大型)库,也不能使用代理脚本。
基本上,我认为 GET 对我正在尝试做的事情“足够好”(跟踪印象)
因此,当脚本被触发时,它会创建一个 iframe,将其隐藏并将源 URL 设置为我的脚本 + 正确的 GET 参数。不需要表格。
【讨论】:
Image 添加到dom 并在onload 上删除它...问题是您无法真正检查请求是否成功,但如果这可能不重要的话。
我会将<iframe> 和<form> 的能力结合起来,甚至可以发送到另一个域。
主文件:
<iframe id=ifr src=form.html style="display: none;"></iframe>
<input id=send-me><input type=button onclick="senddata();" value=Send>
<script>
function senddata()
{
var ifr = document.getElementById('ifr'),
f = ifr.contentWindow.document.forms[0];
f.elements.data.value = document.getElementById('send-me').value;
f.submit();
}
</script>
form.html:
<form action="http://another.doma.in/" method=post>
<input type=hidden name=data>
</form>
这将向另一个域发出 POST HTTP 请求并将<input id=send-me> 的内容发送到那里。
请注意,这只是基本建议,如果您想多次发送数据而不刷新,则需要进行调整。
【讨论】: