【发布时间】:2012-12-10 16:47:47
【问题描述】:
我对 $.post 的调用并没有在我的代码中运行。我没有将请求发送到其他域,实际上,我所做的一切都是本地化的。我的 localhost 别名由 Mac OS X 10.8 自动定义为ramon.local,我从http://ramon.local/linkebuy_0.7/resourceX 请求到http://ramon.local/linkebuy_0.7/resourceY。 Chrome 的控制台上没有错误。
服务器端没有收到请求,我可以通过直接从浏览器访问(输入 URL)来检查它。
不只是一个呼叫不起作用,没有一个呼叫不起作用。他们都是工作日前,我怀疑我不小心更改了本地设置的某些内容。会是什么?
这是我所面临的一个例子:
$.post(
<<CORRECT URL INSIDE THE DOMAIN>>,
{},
function(response) {
console.log('THIS SHOULD BE PRINTED ON CONSOLE');
alert('THIS SHOULD BE POPPED UP');
}
);
运行上述代码时,我没有收到警报,也没有收到控制台消息。所以我尝试了以下方法:
$.support.cors = true;
$.ajax({
url: "http://ramon.local/linkebuy_0.7",
dataType: "json",
type: "GET",
crossDomain: true,
success: function (data) {
console.log(data);
},
error: function (xhr, status, error) {
alert(error + " - " + status);
}
});
我只是带着$.support.cors = true; 和crossDomain: true 来检查这是否是跨域问题。所以我收到了No Transport - error 的警报。
我能做些什么来解决这个问题?
提前致谢。
【问题讨论】:
-
当您说“localhosted”时,您的意思是您使用的是对本地 Web 服务器的引用,还是
file://URL?如果是后者,那么 Chrome 不会让你这样做。 -
使用 firebug 或 Fiddler 查看调用是否发送到服务器。检查它是否会到达您期望的位置,或者您是否收到 404。由于您使用的是 $.post(),因此您隐藏了失败代码。尝试重新实现为 $.ajax() 并指定一个函数来处理错误。
-
还要注意主机和端口号必须完全相同相同;您有时不能使用“localhost”,有时不能使用“your-machine-name”。
-
检查服务器脚本以确保正在接收呼叫。
-
@Pointy 我猜是主机的问题,因为我收到了 AJAX 错误
No transport。我正在使用ramon.localwich Mac OSX 10.8 为我自动设置。该页面是通过ramon.local访问的,我正在向同一个域发送请求,那么,我该怎么办?
标签: javascript jquery ajax post asynchronous