Я уже два часа тяну волосы, пытаясь решить эту проблему, буду признателен за любую помощь.
Я пытаюсь сделать перенаправление на новую вкладку после завершения вызова 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.
Спасибо