Все это хорошие ответы. Я хотел бы добавить пример выполнения при передаче объектов по значению 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'
Ни один из ответов здесь не помог мне. Проблема заключалась в том, что я использовал тонкую сборку jQuery, которая удалила некоторые вещи, ajax является одним из них.
Решение: просто скачайте обычную (сжатую или не) версию jQuery здесь и включить его в свой проект.
Для тех, кто пытается запустить это в 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 )
Я столкнулся с тем же вопросом, и моим решением было: добавить скрипт JQuery.
В частности, мы должны убедиться, что соответствующий JQuery загружен, когда мы отлаживаем наши js под firefox / chrome.
Двойная проверка, если вы используете полную версию 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"
Checkout Документация JQuery
Уведомление об изъятии : jqXHR.success (), jqXHR.error () и jqXHR. Полные () обратные вызовы удаляются с jQuery 3.0. Вместо этого вы можете использовать jqXHR.done (), jqXHR.fail () и jqXHR.always ().
У вас есть ошибка в вашей функции AJAX, слишком много скобок, попробуйте вместо этого $.ajax({
Существует синтаксическая ошибка, поскольку вы поставили круглую скобку после функции ajax и еще один набор скобок для определения списка аргументов: -
Как вы уже написали: -
$.ajax() ({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
Скобка вокруг ajax должна быть удалена, она должна быть: -
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
Не уверен, но похоже, что у вас есть синтаксическая ошибка в коде. Попробуйте:
$.ajax({
type: 'POST',
url: url,
data: postedData,
dataType: 'json',
success: callback
});
У вас были дополнительные скобки рядом с $.ajax
, которые не были нужны. Если вы все еще получаете ошибку, то файл сценария jQuery не загружается.
$.ajax()();
. Это действительный JavaScript. Это означает «вызвать $.ajax
и все, что он возвращает, также вызвать его». Но $.ajax
не возвращает функцию (которая может быть вызвана), она возвращает объект jqXHR
, поэтому она выдает ошибку. Ваш ответ правильный, дополнительная проблема ()
- проблема, но описание проблемы неверно (это не синтаксическая ошибка, ну, по крайней мере, не для синтаксического анализатора).
– Felix Kling
16 August 2013 в 11:39
$
), но это не синтаксическая ошибка, так как она действительна JS. Это просто не соответствующий синтаксис для желаемого поведения, поэтому он вызывает ошибку времени выполнения, как объясняет Феликс.
– nnnnnn
16 August 2013 в 11:44
$.ajax
удаляется из "тонкого" строить? – samnau 11 January 2017 в 23:25