У меня есть XML-данные, извлеченные из файла на стороне сервера, успешно доступны без использования серверных скриптов (например, php).Запись в файл XML на сервере apache с использованием jQuery (без использования сценария на стороне сервера)
Я хочу записать данные xml обратно в файл на стороне сервера после некоторых незначительных изменений, снова без использования серверных скриптов (например, php). Вот то, что я до сих пор:
<button id='WriteToXml'>Write to XML</button>
<script>
$('#WriteToXml').click(function() {
var output_xml;
$.ajax({
type: "GET",
url: "/data/testdata_input.xml",
dataType: "xml",
async: false,
success: function(xml) {
$(xml).find('input').remove();
$(xml).find('test').append('<output></output>');
output_xml = xml;
}
});
// Alternative code?
// $.post("/data/testdata_output.xml", $(output_xml), "xml");
$.ajax({
type: 'POST',
url: "/data/testdata_output.xml", //url of receiver file on server
data: $(output_xml) , //your data
contentType: "text/xml",
dataType: "xml",
cache: false,
async: false,
success: function(xml) {console.log('success\n'+ $(xml).find('test'));}
});
});
</script>
В another SO thread, я прочитал, что необходимо использовать серверный скрипт, из-за дизайн JavaScript (по соображениям безопасности). Но in another thread, я увидел код, который не затрагивал PHP, так что я надеюсь, что я мог бы использовать этот код для записи в файл XML на сервере:
$.ajax({
type: 'POST',
url: "/data/testdata_output.xml", //url of receiver file on server
data: "<test></test>" , //your data
contentType: "text/xml",
dataType: "xml",
cache: false,
async: false,
success: function(xml) {console.log('success\n'+ $(xml).find('test')
До сих пор я получаю сообщение об успехе, но xml-файл на сервере остается неповрежденным. Было бы здорово понять, где я неправильно понял. В то же время я буду использовать этот PHP-код на стороне сервера и попытаться иметь его работы:
//javascript
$.post('savedata.php', {data: "<test></test>",filename: "/data/testdata_output.xml"}, function(){/*Save complete*/});
//savedata.php
$data = $_POST['data'];
$filename = $_POST['filename'];
$f = fopen($filename, 'w+');
fwrite($f, $data);
fclose($f);
Но все равно было бы хорошо, чтобы понять.
Кроме того, я хотел бы некоторые примечания об использовании типов файлов XML в коде $ .POST, а не в файл PHP (на основе $ .post Jquery документ):
$.post("/data/testdata_output.xml", "<test></test>", "xml");
Благодарности
Я не верю, что можно работать на стороне сервера без формы на стороне сервера/ajax. Чтобы позволить такой тип инъекции стать серьезной дырой в безопасности. –