我有從服務器端的文件中獲取的xml數據,無需使用服務器端腳本即可成功訪問(例如,不使用php)。使用jQuery在Apache服務器上寫XML文件(不使用服務器端腳本)
我想將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文件保持不變。理解我誤解的地方會很好。在此期間,我將在服務器端使用此代碼並嘗試使其工作:
//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);
但它仍然很好理解。
而且,我喜歡上的$。員額代碼,而不是一個PHP文件中使用的XML文件類型的一些注意事項(基於.post的$ jQuery的DOC):
$.post("/data/testdata_output.xml", "<test></test>", "xml");
感謝
我不相信有可能在沒有服務器端表單的情況下執行服務器端工作/某種類型的ajax處理程序。允許這種注入將是一個嚴重的安全漏洞。 –