我试图通过ajax将一些数据发布到写入一些xml的php文件中。我基本上想要发布一些数据并替换xml的某个部分。
js:
$(".aSave").click(function(){
var name = $(this).attr("data-name");
var value = $(this).attr("data-value");
var dataObj = {};
dataObj[name]=value;
$.ajax({
url: 'view/template/common/panel.php',
type: 'post',
data: dataObj,
}).done(function(){
alert("saved!");
});
});
php:
<?php
$fruits [] = array(
$orangesValue = $_POST['oranges'],
$applesValue = $_POST['apples'],
);
$doc = new DOMDocument();
$doc->formatOutput = true;
$mainTag = $doc->createElement( "fruits" );
$doc->appendChild( $mainTag );
$oranges = $doc->createElement("oranges");
$oranges->appendChild($doc->createTextNode($orangesValue));
$mainTag->appendChild($oranges);
$apples = $doc->createElement("apples");
$apples->appendChild($doc->createTextNode($applesValue));
$mainTag->appendChild($apples);
echo $doc->saveXML();
$doc->save("fruits.xml")
?>
所以现在当我发送oranges值时,它会写一个只包含oranges值的新xml文件。是否可以仅替换我发布的值。
干杯
答案 0 :(得分:1)
因此,如果我理解正确,您想要阅读现有的XML文档,替换oranges
元素的文本内容并再次保存文档?
然后试试这个:
$fileName = '/my/absolute/path/to/my/file.xml';
$doc = new DOMDocument();
$doc->load($fileName);
$nodes = $doc->getElementsByTagName('oranges');
if (NULL != $nodes) {
$nodes->item(0)->nodeValue = $_POST['oranges'];
}
$doc->save($fileName);
但这太复杂了(或者我讨厌DOM扩展)。如果您有simplexml扩展名,请尝试以下操作:
$fileName = 'blabla.xml';
$xml = simplexml_load_file($fileName);
$xml->oranges = $_POST['oranges'];
$xml->asXML($fileName);
当然,您需要先检查$_POST
数据的正确性,然后再将其写入XML文件。如果您想根据是否发布苹果或橙子来行动,请将oranges
替换为变量:
foreach ($_POST as $fruit => $val) {
$xml->{$fruit} = $val;
}