location.href не работает после ajax (более подробно) - PullRequest
0 голосов
/ 28 августа 2018

Когда вызов ajax завершается успешно, выполняется функция обратного вызова. Функция в функции обратного вызова никак не работает.

Мой код:

    sendAjax(url, data, method, async, callBackFn, IgnoreException) {
         $.ajax({
            type:method,
            async:async,
            url:url,
            data:data
            timeout:timeout,
            beforeSend:function(xmlHttpRequest) {
              xmlHttpRequest.setRequestHeader("AJAX", "true");
            },
            success:function(data) {
               try {
                 var responseText = $.parseJSON(data);
                 if (responseText.error_code && !IgnoreException) {
                    alert(responseText.error_msg);
                    var fnName = responseText.LOGIN||{};
                    if (typeof window[fnName] == 'function') {
                       var args = responseText.LOGIN_PARAM||{};
                       window[fnName](args);
                    }
                 } else {
                    callBackFn($.parseJSON(data));
                    return;
                 }
               } catch(e) {
                 ~~~~~~~~~
               } finally {
               }
            }

})

}

. , , .

sendAjax("mo/serviceAction.do", $("#form").serialize(), "post", true, callback);

. , , .

function callback(param) {
   alert("Here!");
   location.href = "intent://host&params#intent;scheme='scheme';package=package";
}

Однако, если функция, которая не была выполнена после вызова ajax, выполняется как событие click для тега кнопки, location.href выполняется ... Но оповещение («Здесь!») Работает !!

Почему две ситуации разные?

А что, если я хочу запустить location.href прямо в обратном вызове?

1 Ответ

0 голосов
/ 28 августа 2018

Произошло ошибочное написание у вас в качестве имени параметра acllBackFn.

sendAjax(url, data, method, async, acllBackFn, IgnoreException)

И позже.

callBackFn($.parseJSON(data));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...