web-dev-qa-db-ja.com

TypeError:$ .ajax(...)は関数ではありませんか?

MySQLデータベースからデータを返すシンプルなAJAXリクエストを作成しようとしています。これが私の機能です。

function AJAXrequest(url, postedData, callback) {
    $.ajax() ({
        type: 'POST',
        url: url,
        data: postedData,
        dataType: 'json',
        success: callback
    });
}

...そしてここで私はそれを呼ぶところで、必須パラメータを解析します。

AJAXrequest('voting.ajax.php', imageData, function(data) {
    console.log("success!");
});

それでも、成功コールバックは実行されず( "success!"はコンソールに記録されないため)、コンソールにエラーが表示されます。

TypeError: $.ajax(...) is not a function.
success: callback

これは何を意味するのでしょうか? successイベントが$ .ajax内で無名関数を起動する前にAJAXリクエストを実行しましたが、今度は別の名前付き関数(この場合はコールバック)を実行しようとしています。これについてはどうすればいいですか。

132

ここの答えのどちらも私を助けませんでした。問題は次のとおりです。私はjQueryのスリムビルドを使用していましたが、いくつかのものは削除されましたが、ajaxはその1つです。

解決策:通常の(圧縮されているかどうかにかかわらず)jQueryのバージョン をここからダウンロードし 、プロジェクトに含めてください。

639
Gus

完全版のjqueryを使用していて、スリム版を使用していないかどうかを再確認してください。

私はjqueryに付属のjquery cdn-scriptリンクを使用していました。問題は、これがデフォルトでslim.jquery.jsであり、その中にajax関数がないことです。ですから、(Bootstrap Webサイトからコピー&ペーストした)スリムバージョンのjqueryスクリプトリンクを使用している場合は、代わりにフルバージョンを使用してください。

つまり、<script src="https://code.jquery.com/jquery-3.1.1.min.js">の代わりに<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js"を使用するということです。

102
karthiks

よくわかりませんが、コードに構文エラーがあるようです。試してください:

$.ajax({
  type: 'POST',
  url: url,
  data: postedData,
  dataType: 'json',
  success: callback
});

$.ajaxの隣には不要な大括弧がありました。それでもエラーが発生する場合は、jQueryスクリプトファイルはロードされていません。

26
Jason Evans

Jqueryのドキュメントをチェックアウト

非推奨通知:jqXHR.success()、jqXHR.error()、およびjqXHR.complete()のコールバックは、jQuery 3.0以降で削除されています。代わりにjqXHR.done()、jqXHR.fail()、およびjqXHR.always()を使用できます。

11
Mahbub

AJAX関数にエラーがあります。角カッコが多すぎます。代わりに$.ajax({をお試しください

4
netvision73

あなたはajax関数と引数リストを定義するための括弧の別のセットの後に括弧を置いたので構文エラーがあります -

あなたが書いたように: -

$.ajax() ({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});

Ajaxを囲む括弧は削除する必要があります。

$.ajax({
    type: 'POST',
    url: url,
    data: postedData,
    dataType: 'json',
    success: callback
});
3
abhinsit

私は同じ質問に遭遇し、私の解決策は、JQueryスクリプトを追加することでした。

特に、FirefoxをFirefoxの下でデバッグするときには、対応するJQueryがロードされていることを確認する必要があります。

2
Jianeng Xu

nodejsでこれを実行しようとしている人のために:jqueryはブラウザ(または同様のもの)を必要とするので、箱から出してはうまくいきません!私はただインポートを実行させようとしていて、[Function]を書いたconsole.log($)とそれからundefinedを返したconsole.log($.ajax)をロギングしていました。私はtscエラーがなく、intellijからのオートコンプリートがあったので、何が起こっているのか疑問に思いました。

それからある時点で私はnodeがTypeScriptではなく問題であるかもしれないことに気づきました。私はブラウザで同じコードを試してみました、そしてそれはうまくいきました。うまくいくためには、実行する必要があります。

require("jsdom").env("", function(err, window) {
    if (err) {
        console.error(err);
        return;
    }

    var $ = require("jquery")(window);
});

(クレジット: https://stackoverflow.com/a/4129032/3022127

1
bersling

Ajaxを含むjquery minバージョンを参照します。

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
0
Daniel Mendoza