我正在尝试使用jQuery Form Plugi n以ajax形式处理文件上传。
只要我在表单中没有输入[type = file],一切都有效。
当我向表单添加文件输入类型时,它会上传文件并按原样在FireFox中工作,但我在Chrome中收到此错误:
不安全的JavaScript尝试访问 带URL的框架 http://swbdev.net:8888/inc/ajax/edit_page/ 来自带框架的框架 http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements。 域,协议和端口必须 匹配。
它明确指出域,协议和端口必须匹配。我错过了什么,在同样的错误中,它显示了两个URL,域,协议和端口都匹配?
以下是调用插件的JavaScript:
<script type="text/javascript">
$(document).ready(function() {
var options = {
success: function(data) {
alert(data);
},
dataType: 'html',
url: '/inc/ajax/edit_page/'
};
$('#add_elements_form').ajaxForm(options);
});
</script>
更多信息:
现在它在FireFox中也失败了,不知道为什么它早些起作用,但这是FireFox中的错误:
许可被拒绝 获得http://swbdev.net:8888 物业Location.href
它指向插件中的这个代码区域:
function cb() {
if (xhr.aborted) {
return;
}
var doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
if (!doc || doc.location.href == s.iframeSrc) {
// response not received yet
if (!timedOut) return;
}
io.detachEvent ? io.detachEvent('onload', cb) : io.removeEventListener('load', cb, false);
var ok = true;
具体来说,这一行:
if (!doc || doc.location.href == s.iframeSrc
答案 0 :(得分:2)
我最近遇到了与jquery文件上传相同的问题。错误与David B相同
“不安全的JavaScript尝试从包含网址http://swbdev.net:8888/inc/ajax/edit_page/的网址访问包含网址http://swbdev.net:8888/site-pages-edit/19d8bb79c95e164f736f324d1b09a33e/1/#add_elements的框架。域名,协议和端口必须匹配。”
在我的情况下,调用页面网址和文件上传网址都指向xxx.mydomain.com,但是当加载调用页面时,一个javascript将document.domain设置为mydomain.com并导致错误。在加载调用页面后检查document.domain,显示了该问题并通过删除javascript for xxx.mydomain.com中的document.domain行来修复
答案 1 :(得分:0)
绝对怪异。我会尝试将整个事情设置为“POST”,因为输入[type = file]将需要它。当然它应该工作甚至混合,但尝试一下。
$(document).ready(function() {
var options = {
success: function(data) {
alert(data);
},
dataType: 'html',
type: 'POST', // <-- This was added
url: '/inc/ajax/edit_page/'
};
$('#add_elements_form').ajaxForm(options);
});