Чтобы упростить ваш код структурирована следующим образом:
(function($){
$(document).ready(function(){
var Request = 'something';
});
})(jQuery);
// trying to use 'Request' here
Вы не можете использовать Request
в глобальном масштабе, потому что не существует в глобальном масштабе. Он существует только в пределах function
, который вы передали в функцию ready()
, что также происходит в рамках другой анонимной функции. Ничто вне этих функций не может видеть эту переменную.
Если вы потребность переменная существует в глобальной области видимости, вы можете объявить его там:
var Request;
(function($){
$(document).ready(function(){
Request = 'something';
});
})(jQuery);
// you can use 'Request' here
Будьте осторожны с этим подходом, как вы вообще не хотите, чтобы просто переместить все, чтобы глобального масштаба любой когда вы столкнулись с ошибкой. Это не золотой молоток, который вы хотите привыкнуть к использованию. Если вам нуженRequest
, чтобы быть в глобальном масштабе, это сделало бы трюк.
В качестве альтернативы рассмотрите вместо этого ссылку на ваш обработчик click в пределах области, где Request
доступен. Что-то вроде этого:
(function($){
$(document).ready(function(){
var Request = /.../;
$('#yourButton').click(Request.callPost('/Api/Page/start/','mypost'));
});
})(jQuery);
// no need to use 'Request' here
Есть вероятно некоторые изменения вы должны сделать на основе структуры кода за пределами того, что попросили в этом вопросе, но принцип в этом случае должен иметь смысл. Вместо того, чтобы иметь код в глобальной области видимости (встроенный обработчик HTML в вашем случае), попробуйте получить доступ к коду в узкой области, переверните его и получите код в узкой области доступа к объектам глобальной области действия (элемент HTML в вашем случае) ,
Поскольку сложность кода возрастает, и тестируемость становится более важной, вы должны полностью абстрагироваться от глобального объекта, а предоставить его узкополосному коду, а не искать его внутри этого узкоколейного кода. Но мы могли бы потратить часы на такие вещи, и я думаю, что это хорошо за пределами того, что здесь задают.
По существу, вы пытаетесь получить доступ к чему-то в узком пространстве. И немедленное решение будет заключаться в том, чтобы либо перевести что-то в большую область действия, либо изменить то, как вы структурируете свой код, чтобы вам не приходилось обращаться к нему в первую очередь. Первый - это более быстрый подход для всего кода, который вы показываете, последний более чист.