Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: для новичков > THIS на чистом JS как писать?


Автор: Cheizer 11.8.2016, 18:20
Дорогие друзья, подскажите как реализовать THIS на JS.

Ситуация такая, есть JS файл обработчик формы. Который обрабатывает данные с формы и отправляет их методом AJAX на php файл для отправки.
У формы после отправки, функция showFu() показывает текст при удачной отправке, мол все отправилось бла бла бла. 

Но вот от момента отправки и ответом от сервера, есть секунды ожидания.  Которые я решил занять гифкой загрузки.
Добавил в js обработчик две функции stopLoader  и startLoader. Которые показывают и скрывают gif. Вызвал эти функцию в AJAX запросе.

Но вот проблема, форм на странице много, и когда GIF показывается для одной, он так же показывает и для другой формы. 

ВОПРОС, как добавить в JS код THIS? Что бы это все работало для текущей формы?????

вот две функции:
Код

stopLoader: function () 
{
  $(".loadImg").hide()
},              
                    
 startLoader: function () 
 {
    var imgObj = $(".loadImg")
    imgObj.show()
 },


А вот они в запросе:
Код

                    $.ajax({
                                type: "POST",
                                url: _.mailURL,
                                data: {
                                    .......
                                    start: _.startLoader()
                                },
                                success: function () {
                                    _.stopLoader()
                                    _.showFu()
                                }

Автор: ksnk 11.8.2016, 18:38
Вероятно, так сработает. Если this на момент вызова запроса указывает в нужное место.
Код

var that=this; 
$.ajax({
                                type: "POST",
                                url: that.mailURL,
                                data: {
                                    .......
                                    start: that.startLoader()
                                },
                                success: function () {
                                    that.stopLoader()
                                   

Автор: Cheizer 11.8.2016, 20:30
Цитата(ksnk @ 11.8.2016,  18:38)
Вероятно, так сработает. Если this на момент вызова запроса указывает в нужное место.
Код

var that=this; 
$.ajax({
                                type: "POST",
                                url: that.mailURL,
                                data: {
                                    .......
                                    start: that.startLoader()
                                },
                                success: function () {
                                    that.stopLoader()
                                   

К сожалению ошибка с таким вариантом  that.stopLoader()

там все функции должны вызываться так   _.startLoader()

Я не гуру в JS, не знаю почему так. :( 

Автор: ksnk 11.8.2016, 22:54
Код

var _=this; 
$.ajax({
                                type: "POST",
                                url: _.mailURL,
                                data: {
                                    .......
                                    start: _.startLoader()
                                },
                                success: function () {
                                    _.stopLoader()
                                   

Может так?

Автор: Cheizer 12.8.2016, 14:37
Цитата(ksnk @ 11.8.2016,  22:54)
Код

var _=this; 
$.ajax({
                                type: "POST",
                                url: _.mailURL,
                                data: {
                                    .......
                                    start: _.startLoader()
                                },
                                success: function () {
                                    _.stopLoader()
                                   

Может так?

И так нет :( 

Я по коду посмотрел, там есть this, прописывается и используется так 
Код

      var th = $(this),
        req = _.isRequired(th)

     
но даже так все равно у всех форм на сайте появляется GIF load. А не у текущей формы.                    

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)