$ .post不起作用(任何地方)!为什么?

时间:2012-12-10 16:47:48

标签: javascript jquery ajax post asynchronous

我对$ .post的调用在我的代码中无效。我没有将请求发送到其他域,实际上,我正在做一些localhosted。我的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

我该怎么做才能解决这个问题?

提前致谢。

2 个答案:

答案 0 :(得分:1)

试试这个,看看你是否收到任何警报:

// Assign handlers immediately after making the request,
// and remember the jqxhr object for this request
var jqxhr = $.post("your url", function() {
    alert("success");
}).success(function() {
    alert("second success");
}).error(function() {
    alert("error");
}).complete(function() {
    alert("complete");
});

// perform other work here ...
// Set another completion function for the request above
jqxhr.complete(function() {
    alert("second complete");
});​

答案 1 :(得分:1)

嗯,我以一种非常奇怪的方式解决了这个问题。

我删除了JQuery文件并再次下载,替换旧文件。发生了它。

所以,如果你是:

  • 制作非跨域的AJAX请求;
  • 使用JQuery(例如$.post$.get等);
  • 获取No Transport AJAX错误

然后重新下载并替换您的JQuery源

否则,如果您正在进行跨域请求(不是这种情况),那么请查找JSONP并尝试在代码开头设置$.support.cors = true;

感谢大家的评论和答案。