我觉得我的问题会非常简单,但我已经在很多方面尝试过,并且它们都不起作用,我不知道还有什么可以转向。使用PHP删除XML行
我想实现的是:我想从XML文件中删除单个元素。
这种情况:我有一个真正简单构建的XML文件。这将是在未来更复杂的,但现在它看起来像这样:
XML
<?xml version="1.0"?>
<list>
<ingredient>First item</ingredient>
<ingredient>Second item</ingredient>
</list>
显示到一个HTML页面此列表。现在,当它们被生成到页面上时,它们被赋予一个数字,从0开始数起来。因此,第一种成分的数字为0,第二种成分的数字为1等。他们有一个onclick,它将我发送给持有该数字的jQuery。我已经测试过,工作正常。
现在就是它出错的地方。我尝试了Javascript的$ .ajax(),jQuery的$ .post(),甚至使HTML元素直接与帖子形式。他们似乎都没有工作,即使我直接从其他地方复制示例。
我的PHP文件删除的项目如下:
PHP
<?php
header('Location:index.php');
$xmldoc = new DOMDocument();
$xmldoc->load('ingredients.xml');
$root = $xmldoc->firstChild; //Take the <list> tag
$toDel = $_POST['itemToDel']; // This is the number received of the relevant item
$root->removeChild(item($toDel));
$xmldoc->save('ingredients.xml');
?>
没有人对我有一个想法?当我用一个经过验证的工作PHP代码进行测试时,它并没有实现,所以我有感觉介于PHP和Javascript之间的行为,但它并没有实现。截至目前,因为我打消了我以前的尝试,这是我的JavaScript现在:
function removeItem(item){
var itemToDel = item; // The number of the item to delete.
var removeItem = $('.ingredient')[itemToDel].remove(); // removing the HTML parts
//Remove the matching XML line
}
最后一刻编辑:我可以在我的XML文件中写入(权限都OK了),我已经使用其他PHP脚本确实有效,所以localhost确实支持它。
谢谢你的回复THW,但是我想问一下多一点。在你的例子中,你将$ toDel表示为3,并且你知道这个数字是可变的。我的问题是从HTML页面获取这个数字到PHP中。我可以在我的HTML页面中定义它,并且我可以将其转换为JavaScript,但是转换到PHP似乎并不如此。 – Mortaza
这个例子是自包含的,所以它可以在没有外部依赖(文件,用户输入)的情况下执行。你必须适应它并再次使用'$ toDel = $ _POST ['itemToDel'];'。 – ThW
这回答了我的问题:)原来我做了一个成功的调用我的PHP文件,但与建议的PHP删除它,它实际上删除它。最后一个问题:你如何在foreach-bit中使用evaluate()?它通过使用'。((int)$ toDel)不正确吗?'或者我误解评估()? – Mortaza