Intereting Posts
Как заставить переменные сеанса сохраняться в перенаправлении заголовков? Обновление информации о базе данных с помощью кнопки onclick Как получить время истечения срока действия cookie Хост (iPage) не позволяет удаленный доступ. Итак, как я могу получить / изменить мою базу данных? cakephp: перейти на предыдущую страницу после редактирования игрока MVC: сколько кода должно быть в представлении? Как я могу получить список наиболее просматриваемых видеороликов Youtube дня по регионам? Передача данных со страницы на страницу в PHP Метод HTML / PHP Post для разных серверов PHP: iPad не воспроизводит видеоролики MP4, поставляемые PHP, но при непосредственном доступе он делает Многие финалисты в одной форме yii2 PHP. Как открыть файлы и прочитать их, а затем написать новые с помощью «x» строк в файле? Может ли кто-нибудь получить доступ к исходному коду PHP? Можно ли включить функцию внутри другой функции? Woocommerce отключает автоматическое изменение состояния заказа в ожидании-> обработки

Шаблон модуля Javascript с обратным вызовом Ajax

У меня есть веб-сайт с несколькими категориями, для которых данные нужно извлечь из базы данных монго. До сих пор я писал план ajax-звонков, но поскольку это требование требует, чтобы я продолжал использовать одни и те же призывы ajax к различным вещам, я начал думать о многократном использовании кода / шаблонов. Я новичок в шаблонах модулей Javascript, но до сих пор то, что я читал и понимал, похоже, что шаблон модуля Revealing может быть хорошим началом для меня, а не слишком запутанным с остальными объектно-ориентированными вещами.

Я знаю, что есть много ссылок, документов, доступных в SOF и в Интернете, но я действительно не мог получить прямой ответ на мое простое требование, чтобы начать с того, чтобы я перешел на следующий уровень с пониманием.

Я написал здесь тестовый код …

var myApp = new function () { var Var1 = []; getData = function (sendData) { return $.ajax({ type: "POST", url: URL, data: sendData, datatype: "json", success: function (results) {} }); }; getOffers = function (sendData) { getData(sendData); }; return { getOffers: getOffers }; }(); 

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

То, что я хочу достичь, – это простой способ вызвать мои функции, как показано ниже.

 myApp.getOffers({ 'showData': 1, 'myLocation': "Location1", 'clientID': "Client1" }); myApp.getOffers({ 'showData': 1, 'myLocation': "Location2", 'clientID': "Client2" }); 

который извлекает данные из моего mongodb, чтобы я мог изменять их в соответствии с моим требованием. Каждый из них, когда возвращал значения, я бы манипулировал, чтобы показать их в diff Div, чтобы действие не было вне моего определения, поскольку они не являются статическими.

Как достичь этого, поскольку он работает, когда я возвращаю что-то из функции напрямую, но когда он должен возвращаться из ajax, это не связано с обратным вызовом, который я должен написать. Но как это вообще написано, чтобы мы могли повторно использовать код и изменять отправку различных полей с помощью простейшего подхода?

Пожалуйста, измените этот код, чтобы я понял его лучше и начинал с чего-то очень элементарного, чтобы соответствовать моим требованиям. ИЛИ пришлите мне несколько ссылок, которые действительно объясняют мои основы.

Кроме того, я придерживаюсь метода ajax «POST» для myApp по какой-то причине, я думаю, что когда используется метод «GET», пользователи, знающие, какую переменную i pass (из исходного кода) могут напрямую отправлять их как action.php? переменная = 1 & переменная = 2. Как я могу избежать этого, если я могу безопасно использовать метод GET?

Solutions Collecting From Web of "Шаблон модуля Javascript с обратным вызовом Ajax"

Но как я могу получить успех моего вызова ajax за пределами них?

Сделать getOffers возвратом jqXHR getData возвращается, как показано ниже –

 var myApp = (function () { var Var1 = []; var getData = function (sendData) { return $.ajax({ type: "POST", url: URL, data: sendData, datatype: "json", success: function (results) {} }); }; var getOffers = function (sendData) { // return the jqXHR returned by getData return getData(sendData); }; return { getOffers: getOffers }; })(); 

Объект jqXHR возвращаемый $.ajax({}) является Promise Когда вы получаете ответ успеха для запроса Ajax, вы можете прикрепить обработчик успеха, подобный этому, вне вашего запроса ajax

 myApp.getOffers({ 'showData': 1, 'myLocation': "Location1", 'clientID': "Client1" }).done(function (data, textStatus, jqXHR) { // work with DOM here }); 

Подробнее о JQuery Deferreds / Promises здесь –

Также вы сделали getOffers , getOffers глобальным, не getOffers var во время объявления.

В соответствии с вашим комментарием об использовании POST вместо GET общее правило – GET – для извлечения данных, POST для сохранения – только потому, что вы используете POST что не означает, что кто-то не может нюхать данные, которые вы отправляете, это является частью тела запроса вместо URL-адреса запроса. Если вы считаете, что данные, которые вы отправляете, действительно чувствительны, вы должны изучить возможность включения SSL(HTTPS) для вашего приложения.