views:

365

answers:

1

I'm building a small Chrome extension that must send messages through a POST http request to a server in my company network, and I'm using jQuery 1.4.1 to speed up the development of the javascript part.

I have this code to send the request:

function send() {
    $.ajax({
        url: "http://mycompany.com/update",
        method: "POST",
        data: {status: "sometest", in_reply_to_status_id: "anId"},
        success: function(data, textStatus) {
            console.log("success");
            console.log(data);
            console.log(textStatus);
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            console.log("error");
            console.log(XMLHttpRequest);
            console.log(textStatus);
            console.log(errorThrown);
        },
        complete: function(XMLHttpRequest, textStatus) {
            console.log("complete");            
        }
    });     
}

The request done this way fails, in the Chrome log I see that the server responds with a http status 400 and with the text "This methods requires POST".

If I change to code above with this:

function send() {
    $.post("http://sunshine.emerasoft.com/statusnet/api/statuses/update.xml", {status: "sometext", in_reply_to_status_id: "anId"}, function(data) {
        console.log(data)
    }); 
}

everything works fine, the http status is 200 and server side I can see that the data I sent is correctly saved.

I need to use the full $.ajax() method because I need to do some work in case of success or failure, and some other when the request is complete, so $.post() is not enough.
Am I doing something wrong calling $.ajax(), or there is an issue of some kind, maybe because I am in the xontext of a Chrome extension?

Thanks

+11  A: 

I believe the $.ajax() function takes a 'type' option, not a 'method' option.

The default type is GET.

Drew Wills
You are absolutely right :) I went through the jQuery documentation a million times and I never noticed that I was using the wrong option. Thanks for pointing this to me!
Davide Gualano