当我尝试进行ajax调用时,我在下面的chrome上得到了错误。
XMLHttpRequest无法加载javascript:;.交叉原始请求是 仅支持协议方案:http,data,chrome, chrome-extension,https,chrome-extension-resource。
这是代码:
$.ajax({
type: "POST",
data: {pvalue : pid},
cache: false,
url: "xxx.in/yy/ajax.php",
success: function(data)
{
$modal.find('.edit-content').html(data);
}
答案 0 :(得分:3)
对该特定错误消息的所有研究表明主机网页未通过http:// URL加载,并且可能是文件:URL。默认情况下,浏览器不允许来自文件:URL的跨源请求。
如果要使用ajax请求,则需要通过Web服务器加载网页,而不是通过文件系统加载。
以下是关于该特定错误的一些其他问题和答案,这些错误都指向用于加载页面的错误类型的URL。
"Cross origin requests are only supported for HTTP." error when loading a local file
React.js: Example in tutorial not working
Cross origin requests are only supported for HTTP but it's not cross-domain
https://groups.google.com/forum/#!topic/tincr-for-chrome-devtools/nA9k2qh7F-g
答案 1 :(得分:1)
如果您要访问其他域中的数据,则必须覆盖Chrome的Same-origin Policy
。为此,您必须指定dataType: 'jsonp'
$.ajax({
type: "POST",
dataType: 'jsonp',
data: {pvalue : pid},
cache: false,
url: "xxx.in/yy/ajax.php",
success: function(data)
{
$modal.find('.edit-content').html(data);
}
});
如果服务器中的文件ajax.php
(您现在正在使用的文件),则只需在url
部分指定文件名(如下所示)。
$.ajax({
type: "POST",
data: {pvalue : pid},
cache: false,
url: "ajax.php",
success: function(data)
{
$modal.find('.edit-content').html(data);
}
});