Загрузка файла с использованием html, возвращенного из вызова ajax

#javascript #html #jquery #ajax

#javascript #HTML #jquery #ajax

Вопрос:

Я пытаюсь загрузить файл на той же странице, используя html, возвращенный из вызова ajax. Вызов ajax выглядит следующим образом:

                             $.ajax({
                                url: './xyz.cshtml',
                                type: "POST",                               
                                data: {
                                    //some validation and data to send to server.
                                },
                                success: function (data, status, xhr) {
                                    //alert('status: '   status   ', data: '   data);
                                    var result = $(data);
                                    
                                    console.log(result);
                                    result.appendTo("body");
                                }
                             });
  

HTML выглядит следующим образом:

 <iframe width='1' height='1' frameborder='0' src='http://server//some_folder/some.xlsm'></iframe> <script>document.body.style.cursor = 'default';</script>
  

В принципе, я хочу разобрать этот iframe, а затем запустить его на той же странице. При запуске кода в iframe файл будет загружен. Итак, мне нужна помощь в разборе этого html на страницу и последующем запуске этого блока кода.

Заранее спасибо.

Комментарии:

1. Покажите, что возвращается из вашего вызова ajax. Показать некоторые визуальные. Что-то похожее на то, что вы хотите сделать. Трудно понять, что вы говорите.

2. @ChiragArora это возвращенный HTML: <iframe width='1' height='1' frameborder='0' src='http://server//some_folder/some.xlsm'></iframe> <script>document.body.style.cursor = 'default';</script> теперь я хочу использовать этот HTML для загрузки файла по ссылке iframe.

3. @maverick6912 если я вас правильно понял, вы хотите иметь возможность просто загрузить файл с URL-адреса iframe, который вы получаете из этого ответа ajax

4. @swadhwa да, но загрузите его на той же странице.

Ответ №1:

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

 var ajaxResponse = "<iframe width='1' height='1' frameborder='0' src='http://server//some_folder/some.xlsm'></iframe> <script>document.body.style.cursor = 'default';</script>";

// this function will simply download the file
function download(filename, dataurl) {
  var a = document.createElement("a");
  a.href = dataurl;
  a.setAttribute("download", filename);
  a.click();
}

var regex = /<iframe.*?src='(.*?)'/;
var src = regex.exec(ajaxResponse)[1]; // src from that iframe

download("SomeFileName.xmlsm", src);