执行AJAX请求时出现问题

时间:2018-09-11 13:40:06

标签: javascript php jquery ajax facebook-messenger-bot

我正在构建一个Facebook Messenger机器人。我到了需要显示网络视图的地步。该Web视图执行一些付款处理,成功后,我调用Messenger SDK的函数来关闭Web视图,然后执行Ajax调用以继续向用户发送消息。现在我有一个问题,直到ajax完成执行(即将消息发送给用户)后,网络视图才会关闭。如果我将Messenger close函数放置在ajax调用之外,则webview将关闭,但不会执行ajax。请我如何关闭Web视图,然后继续执行Ajax请求。这是我目前正在做的事情:

d0ce9328a53032d4484cccff4c0bdd92ad701567
token valide jusqu'à : 2018-09-12 07:46:30.082915+00:00
il est actuellement : 2018-09-12 07:45:30.082915+00:00
 ==> Token existe et valide <==
[12/Sep/2018 09:45:42] "GET /crud/download/token/d0ce9328a53032d4484cccff4c0bdd92ad701567/ HTTP/1.1" 200 7447
[12/Sep/2018 09:45:42] "GET /static/css/common-8073709e.css HTTP/1.1" 404 1682
d0ce9328a53032d4484cccff4c0bdd92ad701567
token valide jusqu'à : 2018-09-12 07:46:30.082915+00:00
il est actuellement : 2018-09-12 07:45:30.082915+00:00
 ==> Token existe et valide <==
[12/Sep/2018 09:46:10] "GET /crud/download/token/d0ce9328a53032d4484cccff4c0bdd92ad701567/ HTTP/1.1" 200 7447
[12/Sep/2018 09:46:10] "GET /static/css/common-8073709e.css HTTP/1.1" 404 1682
d0ce9328a53032d4484cccff4c0bdd92ad701567
token valide jusqu'à : 2018-09-12 07:46:30.082915+00:00
il est actuellement : 2018-09-12 07:45:30.082915+00:00
 ==> Token existe et valide <==
[12/Sep/2018 09:46:30] "GET /crud/download/token/d0ce9328a53032d4484cccff4c0bdd92ad701567/ HTTP/1.1" 200 7447
[12/Sep/2018 09:46:30] "GET /static/css/common-8073709e.css HTTP/1.1" 404 1682
d0ce9328a53032d4484cccff4c0bdd92ad701567
token valide jusqu'à : 2018-09-12 07:46:30.082915+00:00
il est actuellement : 2018-09-12 07:45:30.082915+00:00
 ==> Token existe et valide <==
[12/Sep/2018 09:46:41] "GET /crud/download/token/d0ce9328a53032d4484cccff4c0bdd92ad701567/ HTTP/1.1" 200 7447
[12/Sep/2018 09:46:41] "GET /static/css/common-8073709e.css HTTP/1.1" 404 1682

2 个答案:

答案 0 :(得分:0)

我不知道这是否可以解决您的问题,但是您可以尝试以下方法:

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

理论上,该窗口将在请求初始化之前关闭。

答案 1 :(得分:0)

我不知道我是否理解正确,但是您是否尝试过ajax的beforeSendcomplete函数?

$.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. 
    }
})