Я пытаюсь создать функцию, которая экспортирует и XML при загрузке. Я использую функцию XMLWriter
из PHP, которая прекрасно работает. Я на самом деле получаю желаемый результат, только он возвращается в моем ответе AJAX, а не в качестве загрузки, и я сказал сценарию сделать это.
Мой макет выглядит следующим образом:
JS + AJAX
// ///////////////////////////// //
// START EXPORT //
// ///////////////////////////// //
function exports(vars){
$.ajax({
url: domain + "/core/ajax/export.php",
type: "post",
dataType: "text",
data: vars,
success: function(data){
if(vars.form == 'export-records'){
}
},
error: function(jqXhr, textStatus, errorMessage){
console.log("Error: ", errorMessage);
}
});
}
$('#export-propperties').bind('submit',function(){
event.preventDefault();
var content = $('#export-propperties').serializeArray().reduce(function (newData, item) {
if (item.name.substring(item.name.length - 2) === '[]') {
var key = item.name.substring(0, item.name.length);
if(typeof(newData[key]) === 'undefined') {
newData[key] = [];
}
newData[key].push(item.value);
} else {
newData[item.name] = item.value;
}
return newData;
}, {});
exports(content);
});
Итак, что здесь происходит, я отправляю свою форму в виде пары ключ-значение в мою функцию ajax. Работает отлично. Процесс php выглядит следующим образом.
// START THE XML HERE
// AFTER THE DATA IS FETCHED WE WILL PARSE IT NORMALLY. WE ARE GOING TO USE THE RESULT LATER, FIRST WE CREATE THE INSTANCE OF THE FILE
// TO DEFINE FIRST THE XML
$writer = new XMLWriter();
$writer->openURI('php://output');
$writer->startDocument('1.0','UTF-8');
$writer->setIndent(4);
// CREATE THE HEADING OF THE PRODUCTDATA
$writer->startElement('ProductData');
$writer->writeAttribute('xmlns:xs', 'http://www.w3.org/2001/XMLSchema');
$writer->writeAttribute('xmlns', 'http://www.gs1.nl/productgegevens/insbou/004');
$writer->writeAttribute('xmlns:xsi', 'http://www.w3.org/2001/XMLSchema-instance');
$writer->writeAttribute('xsi:schemaLocation', 'http://www.gs1.nl/productgegevens/insbou/004 Productgegevens_insbou004.xsd');
// blablabla xml generation //
$writer->endElement();
// END OF DOCUMENT
$writer->endDocument();
$writer->flush();
Проблема в том, что мой ответ кода XML, а не требуемая XML загрузка ($writer->openURI('php://output');
). У меня такое ощущение, что я не могу выполнить окно загрузки в рамках вызова AJAX, или я здесь не прав? Как я могу решить это?