5

POST http リクエストを介して会社のネットワーク内のサーバーにメッセージを送信する必要がある小さな Chrome 拡張機能を構築しています。また、jQuery 1.4.1 を使用して JavaScript 部分の開発を高速化しています。

リクエストを送信するための次のコードがあります。

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

この方法で行われたリクエストは失敗します。Chrome ログで、サーバーが http ステータス 400 と「このメソッドには POST が必要です」というテキストで応答することがわかります。

上記のコードに変更すると、次のようになります。

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

すべて正常に動作し、http ステータスは 200 で、サーバー側では、送信したデータが正しく保存されていることがわかります。

完全な $.ajax() メソッドを使用する必要があるのは、成功または失敗の場合にいくつかの作業を行う必要があり、リクエストが完了したときに別の作業を行う必要があるためです。したがって、$.post() では十分ではありません。
$.ajax() の呼び出しで何か間違ったことをしているのですか、それとも Chrome 拡張機能の xontext にいるために何らかの問題があるのでしょうか?

ありがとう

4

1 に答える 1

13

$.ajax()関数は「メソッド」オプションではなく「タイプ」オプションを取ると思います。

デフォルトのタイプは GET です。

于 2010-02-02T23:02:27.837 に答える