Ramon K.
Ramon K.

Reputation: 3502

$.post is not working (anywhere)! Why?

My calls to $.post are not working all over my code. I'm not sending the request to other domains and, actually, I'm doing everything localhosted. My localhost alias was automatically defined by the Mac OS X 10.8 as ramon.local and I'm requesting from http://ramon.local/linkebuy_0.7/resourceX to http://ramon.local/linkebuy_0.7/resourceY. There are no errors on Chrome's console.

The server side doesn't receive the request and I can check it by accessing directly from the browser (typing the URL).

It's not just one call that is not working, none of them are. They were all working days ago and I'm suspicious that I accidentally changed something on my local settings. What could it be?

Here's an example of what I'm facing:

$.post(
    <<CORRECT URL INSIDE THE DOMAIN>>,
    {},
    function(response) {
        console.log('THIS SHOULD BE PRINTED ON CONSOLE');
        alert('THIS SHOULD BE POPPED UP');
    }
);

I don't get the alert, neither the console message while running the code above. So I tried the following:

$.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);
    }
});

I just came with $.support.cors = true; and crossDomain: true to check if it was a cross domain issue. So I was alerted No Transport - error same way as before.

What can I do to solve that?

Thanks in advance.

Upvotes: 1

Views: 1062

Answers (2)

Ramon K.
Ramon K.

Reputation: 3502

Well, I solved the problem in a very strange way.

I deleted the JQuery file and downloaded it again, replacing the old one. Happens it worked out.

So, if you're:

  • Making AJAX requests that are not cross-domain;
  • Using JQuery for it (e.g. $.post, $.get, etc);
  • Getting No Transport AJAX error

Then re-download and replace you're JQuery source.

Else, if you're making cross-domain requests (not this case), then look for JSONP and try to set $.support.cors = true; at the beginning of you're code.

Thanks everyone for the comments and answers.

Upvotes: 1

palaѕн
palaѕн

Reputation: 73916

Try this and see if you are getting any alert:

// 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");
});​

Upvotes: 1

Related Questions