Проблемы с выполнением AJAX-запроса - PullRequest
0 голосов
/ 11 сентября 2018

Я создаю бот-мессенджер Facebook.Я попал в точку, где мне нужно показать веб-просмотр.Это веб-представление выполняет некоторую обработку платежей, и в случае успеха я вызываю функцию Messenger SDK, чтобы закрыть веб-просмотр, а затем выполняю Ajax-вызов для продолжения обмена сообщениями с пользователем.Теперь у меня есть проблема, веб-просмотр не закрывается, пока не завершится выполнение ajax, то есть отправка сообщений пользователю.Если я помещаю функцию закрытия Messenger вне вызова ajax, веб-просмотр закрывается, но ajax не выполняется.Пожалуйста, как мне закрыть веб-просмотр и затем продолжить выполнение ajax-запроса. Вот что я сейчас делаю:

$.ajax({
    type: 'POST',
    dataType: 'JSON',
    url: '/api/payment/'+userId+'/'+payRef,
    data: 'userId='+userId,
    success: function (data) {
        console.log(data);
        MessengerExtensions.requestCloseBrowser();
    }
})

Ответы [ 2 ]

0 голосов
/ 11 сентября 2018

Не знаю, правильно ли я понял, но вы пробовали функции beforeSend и complete из ajax?

$.ajax({
    type: 'POST',
    dataType: 'JSON',
    url: '/api/payment/'+userId+'/'+payRef,
    data: 'userId='+userId,
    beforeSend: function(jqXHR, settings) {
    // Action before send the request to the url
    },
    success: function (data) {
    // Action if the process in the url url don't throw any errors
    },
    complete: function(jqXHR, textStatus) {
    // Action when the request is returned to application
    },
    error: function(jqXHR, textStatus, errorThrown) {
    // I would recommend you always use the error function. 
    }
}) 
0 голосов
/ 11 сентября 2018

Я не знаю, может ли это решить вашу проблему, но вы можете попробовать это:

$.ajax({
    type: 'POST',
    dataType: 'JSON',
    url: '/api/payment/'+userId+'/'+payRef,
    data: 'userId='+userId,
    beforeSend: function() {
        MessengerExtensions.requestCloseBrowser();
    },    
    success: function (data) {
        console.log(data);
    }})

Теоретически, окно закроется перед запросом init.

...