Из события остановки перетаскиваемого div я вызываю функцию php через ajax.Есть ошибки прав доступа, когда этот скрипт сохраняет XML.
Warning: SimpleXMLElement::asXML(communities.xml) simpleelement.asxml failed to open stream: permission denied in c:\path\make_update.php.
Вызов ajax выполняется в div, созданном динамически, то есть div создается скриптом, а вызов для сохранения xml определяется следующим образом.
echo " $('#".$node['ID']."').draggable({ stop: function(event, ui) { update_div('".$node['ID']."') } });\n";
Ajax-вызов выполняется следующим образом.
function update_div(divid) {
width= $('#'+divid).width();
height=$('#'+divid).height();
coord =$('#'+divid).position();
dtop = coord.top;
dleft = coord.left;
name = "";
/* alert ('Finished dragging! '+divid+' '+width+' '+height+' '+dtop+' '+dleft); */
//define php info and make ajax call to update XML
$.ajax({
url: "make_update.php",
type: "POST",
data: { nodeid: divid, name: name, top: dtop, left: dleft, width: width, height: height },
cache: false,
success: function (response) {
if (response != '')
{
alert(response);
}
}
});
}
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
function make_update( $nodeid, $name, $top, $left, $width, $height ) {
$nodes = new SimpleXMLElement('communities.xml', null, true);
$returnArray = $nodes->xpath("//COMMUNITY[@ID='$nodeid']");
$node = $returnArray[0];
$node->TOP = $top;
$nodes->asXML('communities.xml');
return $node->TOP;
}
echo make_update(trim($_REQUEST['nodeid']),trim($_REQUEST['name']),trim($_REQUEST['top']),trim($_REQUEST['left']),trim($_REQUEST['width']),trim($_REQUEST['height']));
?>
Данные извлекаются из файла XML.Проблема в разрешении сохранить файл.В другом месте я могу сохранить XML.Разница здесь в том, что скрипт вызывается с .draggable()
.Как определить разрешения для сохранения XML в этом сценарии?Разрешение на XML и каталог, в котором он находится, - чтение и запись.