Javascript перенаправление в функции успеха Ajax не позволяет новую вкладку - PullRequest
0 голосов
/ 30 октября 2018

Я уже два часа тяну волосы, пытаясь решить эту проблему, буду признателен за любую помощь.

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

function buildPdfPreview( picklistId, fileType, fileDestination ) {
    var previewObj = {
        encodedString: ''
    };
    var url = 'preview_document'; 
    var method = 'POST'; // method GET or POST
    var stringifyData = {'passme': encodeURIComponent(JSON.stringify(previewObj))};
    var target = '_blank'; // set _blank to open in a new window
    $.redirect(url, stringifyData, method, target);
}

новая вкладка открывается без проблем. $ .redirect - это плагин jquery, который позволяет вам публиковать переменные в перенаправлении, аналогично скрытой форме, а затем вызывать submit

Однако, если я помещу тот же запрос перенаправления в вызов ajax, он не будет работать, ничего не произойдет, как и

function buildPdfPreview( picklistId, fileType, fileDestination ) {

   var arr = standardAjaxArray( "downloadOrEmailPicklist", 5 );
   var obj = {
       arr: arr,
       picklistId: picklistId,
       fileType: fileType,
       fileDestination: fileDestination
   };
   var stringifyData = {'passme' : encodeURIComponent( JSON.stringify( obj ) ) };
   $.ajax({
        url: route() + 'global_fxns/ajaxHub',
        type: 'POST',
        async: true, 
        data: stringifyData,
        success: function(data) {       
            var previewObj = {
                encodedString: ''
            };
            var url = 'preview_document'; 
            var method = 'POST'; // method GET or POST
            var stringifyData = {'passme': encodeURIComponent(JSON.stringify(previewObj))};
            var target = '_blank'; // set _blank to open in a new window
            $.redirect(url, stringifyData, method, target);
        }
    });
}

Когда я запускаю это, ничего не происходит, ajax успешен, но новая вкладка не создается. Самое смешное, что если я поменяю цель с «_blank» на «», пустую строку, она перенаправит меня на текущую вкладку.

Я попытался сделать это со скрытой формой и вызвать метод submit () вместо плагина $ .redirect и того же самого. Может ли кто-нибудь помочь мне понять, почему я не могу создать новую вкладку в этом вызове ajax, но я могу вне этого? И почему базовый редирект в той же вкладке работает внутри или снаружи вызова ajax.

Спасибо

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