誰かが私に助けてもらえるかどうか疑問に思う。jQueryを使ってXMLノードを削除する
私はthisページをまとめました。これにより、ユーザーはアップロードした画像のギャラリーを見ることができます。初期アップロード時
は、物理的な画像は、次のファイル構造に保存されている: UploadedFiles/userid/locationid/image
と画像即ち説明などの詳細は、物理的なイメージと同じディレクトリにあるfiles.xml
と呼ばれるXMLファイルに保存されています。
私は現在、ユーザーがこれらの画像を削除できるようにしています。
各イメージの下に削除アイコンとして、私は、助けを借りて、物理的イメージを正常に削除する以下の情報をまとめました。
'削除アイコンにOnclickイベント'
<script type="text/javascript">
Galleria.ready(function() {
this.$('thumblink').click();
$(".galleria-image").append(
"<span class='btn-delete ui-icon ui-icon-trash'></span>");
$(".btn-delete").live("click", function(){
var img = $(this).closest(".galleria-image").find("img");
// send the AJAX request
$.ajax({
url : 'delete.php',
type : 'post',
data : { image : img.attr('src') },
success : function(){
alert('Deleting image... ');
img.parent().fadeOut('slow');
}
});
return false;
});
});
</script>
オリジナル 'delete.php'
<?php
if (!empty($_POST)) {
$image = $_POST['image'];
if (file_exists($image)) {
unlink($image);
}
}
?>
は 'delete.php'
<?php
if (!empty($_POST)) {
$image = $_POST['image'];
if (file_exists($image)) {
unlink($image);
}
}
$doc = new DOMDocument;
$doc->load('files.xml');
$thedocument = $doc->documentElement;
$list = $thedocument->getElementsByTagName('files');
$nodeToRemove = null;
foreach ($list as $domElement){
$attrValue = $domElement->getAttribute('file_name');
if ($attrValue == 'image') {
$nodeToRemove = $domElement;
}
}
if ($nodeToRemove != null)
$thedocument->removeChild($nodeToRemove);
echo $doc->saveXML();
?>
私は問題を更新しましたxmlファイルからxmlノードを削除しています。私は以下のXMLファイルの抜粋を提供しました。
<?xml version="1.0" encoding="utf-8" ?>
- <files>
<file name="stag.jpg" source="stag.jpg" size="21341" originalname="stag.jpg" description="No description provided" userid="1" locationid="1" />
</files>
私はこれについて移動する方法についての研究のかなり行われ、jQueryのは、それは私がノードを削除することができるだろうと思っすなわちjQuery.remove
自身のコマンドの持っていたことがわかりました。簡単なチュートリアルの後、私は私の「にOnclickイベント」スクリプトの最後に次を追加しました:私は特定のエラーを受信しませんが、
var doc = $(files.xml);
doc.find('file_name:src').remove();
残念ながら、ノードがファイルから削除されていません。私はXMLに関しては完全な初心者ですので、おそらく私はこれをあまりに単純化して見ています。
私はちょうど誰かがこれを見て、私が間違っていることを私に知らせてくれるかもしれないと思っていました。
多くのおかげに関して
こんにちは@Amogh Talpallikar、私のポストに返信する時間を取ってくれて多くの感謝。私はプログラミングのこの要素に本当に新しいです、私はちょうどあなたが私がどこから始める必要があるか知るために、このことを念頭に置くことができるかどうか疑問に思いました。多くのありがとうとご褒美 – IRHM
xmlファイルからノードを削除するには、delete.phpを使用する必要があります。 物理イメージを削除するたびに、そのノードをXMLから削除する必要があります。 –
PHP XML DOM操作をチェックアウトし、PHPを使用してXML DOMをロードし、そこからノードを削除して元に戻します。 –