Невозможно отправить переменную jquery в php-скрипт. $ .Ajax не является функцией error [duplicate]

Все это хорошие ответы. Я хотел бы добавить пример выполнения при передаче объектов по значению vs по ссылке:

#include <iostream>

using namespace std;

// Base class
class A {
public:
    A() {}
    A(const A& a) {
        cout << "'A' copy constructor" << endl;
    }
    virtual void run() const { cout << "I am an 'A'" << endl; }
};

// Derived class
class B: public A {
public:
    B():A() {}
    B(const B& a):A(a) {
        cout << "'B' copy constructor" << endl;
    }
    virtual void run() const { cout << "I am a 'B'" << endl; }
};

void g(const A & a) {
    a.run();
}

void h(const A a) {
    a.run();
}

int main() {
    cout << "Call by reference" << endl;
    g(B());
    cout << endl << "Call by copy" << endl;
    h(B());
}

Выход:

Call by reference
I am a 'B'

Call by copy
'A' copy constructor
I am an 'A'
72
задан Manish Kumar 16 August 2013 в 11:36
поделиться

8 ответов

Ни один из ответов здесь не помог мне. Проблема заключалась в том, что я использовал тонкую сборку jQuery, которая удалила некоторые вещи, ajax является одним из них.

Решение: просто скачайте обычную (сжатую или не) версию jQuery здесь и включить его в свой проект.

371
ответ дан Gus 21 August 2018 в 02:28
поделиться
  • 1
    Это то, что исправило мою проблему! Что за черт jQuery ?? Почему $.ajax удаляется из "тонкого" строить? – samnau 11 January 2017 в 23:25
  • 2
    это должен быть принятый ответ – php_nub_qq 11 March 2017 в 08:16
  • 3
    Тонкая сборка претендовала на другую жертву. – Drew Kennedy 20 July 2017 в 12:10
  • 4
    Я скопировал код из Bootstrap. Они используют тонкую версию. Может быть, вы тоже? – Cyril N. 21 September 2017 в 15:13
  • 5
    Yeap. Bootstrap использует тонкую версию Bootstrap без $ .ajax – codeshinobi 7 August 2018 в 21:36
  • 6

Для тех, кто пытается запустить это в nodejs: он не будет работать из коробки, поскольку jquery нужен браузер (или аналогичный)! Я просто пытался запустить импорт и записывал console.log($), который писал [Function], а затем также console.log($.ajax), который возвратил undefined. Я не имел ошибок tsc и имел автозаполнение от intellij, поэтому мне было интересно, что происходит.

Тогда в какой-то момент я понял, что проблема node может быть проблемой, а не машинописной. Я попробовал тот же код в браузере, и он сработал. Чтобы заставить его работать, вам нужно запустить:

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

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

(кредиты: https://stackoverflow.com/a/4129032/3022127 )

1
ответ дан bersling 21 August 2018 в 02:28
поделиться

Я столкнулся с тем же вопросом, и моим решением было: добавить скрипт JQuery.

В частности, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наши js под firefox / chrome.

1
ответ дан Jianeng Xu 21 August 2018 в 02:28
поделиться

Двойная проверка, если вы используете полную версию jquery, а не какую-то тонкую версию.

Я использовал ссылку jquery cdn-script, которая поставляется с jquery. Проблема заключается в том, что по умолчанию это slim.jquery.js, который не имеет в нем функции ajax. Итак, если вы используете (скопированный с сайта Bootstrap) узкую версию jquery script link, используйте полную версию.

То есть используйте <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"

79
ответ дан karthiks 21 August 2018 в 02:28
поделиться

Checkout Документация JQuery

Уведомление об изъятии : jqXHR.success (), jqXHR.error () и jqXHR. Полные () обратные вызовы удаляются с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always ().

10
ответ дан Mahbub 21 August 2018 в 02:28
поделиться

У вас есть ошибка в вашей функции AJAX, слишком много скобок, попробуйте вместо этого $.ajax({

4
ответ дан netvision73 21 August 2018 в 02:28
поделиться

Существует синтаксическая ошибка, поскольку вы поставили круглую скобку после функции 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
ответ дан Sasidhar Vanga 21 August 2018 в 02:28
поделиться

Не уверен, но похоже, что у вас есть синтаксическая ошибка в коде. Попробуйте:

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

У вас были дополнительные скобки рядом с $.ajax, которые не были нужны. Если вы все еще получаете ошибку, то файл сценария jQuery не загружается.

25
ответ дан user664833 21 August 2018 в 02:28
поделиться
  • 1
    Это не синтаксическая ошибка. Предполагалось, что возвращаемое значение будет функцией, которой она не является. – Felix Kling 16 August 2013 в 11:34
  • 2
    Ах, я вижу. Так что действительно, эта проблема - просто недостающая ссылка на файл сценария jQuery. – Jason Evans 16 August 2013 в 11:38
  • 3
    Нет. Посмотрите на это как $.ajax()();. Это действительный JavaScript. Это означает «вызвать $.ajax и все, что он возвращает, также вызвать его». Но $.ajax не возвращает функцию (которая может быть вызвана), она возвращает объект jqXHR, поэтому она выдает ошибку. Ваш ответ правильный, дополнительная проблема () - проблема, но описание проблемы неверно (это не синтаксическая ошибка, ну, по крайней мере, не для синтаксического анализатора). – Felix Kling 16 August 2013 в 11:39
  • 4
    Нет, извините, вот что я говорил в своем предыдущем комментарии; что это не проблема с синтаксической ошибкой, так как синтаксис действителен, но проблема с файлом сценария jQuery, который не загружается в то время, когда используется $ .ajax (). – Jason Evans 16 August 2013 в 11:43
  • 5
    Нет, jquery.js не пропал без вести (если бы ошибка была связана с $), но это не синтаксическая ошибка, так как она действительна JS. Это просто не соответствующий синтаксис для желаемого поведения, поэтому он вызывает ошибку времени выполнения, как объясняет Феликс. – nnnnnn 16 August 2013 в 11:44
Другие вопросы по тегам:

Похожие вопросы: