使用AJAX传递的数据编辑XML文件-正在删除XML数据
Editing XML file with Data passed from AJAX - XML data is being deleted
我正在做一个项目,在这个项目中,我将从googlemaps API读取数据,并将其转换为每个对象的XML,然后将该XML存储在数组槽中(在读取所有数据之前,这种情况将多次发生)。然后,我将向一个PHP文件发出Ajax POST请求,发送充满XML和布尔值的数组(让服务器知道是哪个请求)。然后,PHP将使用SimpleXML加载,用接收到的数据编辑XML,然后保存它
我的问题是,当我发出ajax请求时,Firebug会识别出POST
请求,并且它正在发送所有正确的数据。它抛出一个302
(错误?),说Moved Temporarily
。然后发生一个GET
请求(我认为是由服务器发起的),它在我询问布尔值(称为ajax)是否为真的行上输出一个错误,说Undefined inded: ajax
。然后,当我检查我的XML文件时,所有数据都被删除了(文件仍然存在,但其中不再有任何XML),我非常困惑如何解决这个问题,我真的不知道该怎么办。以下是我的一些相关代码。
提前感谢您所能提供的任何帮助。任何帮助都将非常有帮助!
此外,如果你需要我澄清任何事情,请随时发表评论。
javascript
function sendData(result)
{
$.ajax(
{
type:'POST',
url:'getXML.php',
traditional: false,
data:
{
//Result is an array full of XML
'myXML': result,
//The ajax boolean is for letting the PHP know that it is this request
'ajax' : true
},
success: function(data)
{
$('#output').text(data);
}
})
}
PHP
<?php
//Set error reporting
ini_set('display_errors', 1);
ini_set('log_errors', 1);
ini_set('error_log', dirname(__FILE__) . '/error_log.txt');
error_reporting(E_ALL);
//Checks if the get request is from the AJAX call
if($_POST['ajax'])
{
//////////////////////////////Code for editing XML/////////////////////////////////////////
//Checks to see if the xml file exists.
if (file_exists('business.xml'))
{
//Loads the XML file
$xml = simplexml_load_file('business.xml');
$result = $_POST['myXML'];
//Append XML to existing file using data loaded in from AJAX request
appendXML($xml, $result);
}
else
{
//Loading XML has failed
exit('Failed to open business.xml.');
}
}
function appendXML($xml, $xmlResult)
{
foreach($xmlResult as $result)
{
//Creates new business node
$business = $xml ->addChild('business');
//Adds XML to business node (Please oh dear god let this work)
$business ->addChild($result);
file_put_contents("business.xml", $xml);
header('Location: getXML.php');
}
}
?>
您遇到的问题是这行:
header('Location: getXML.php');
在页面的第一次运行中,一切都很好,并且正在调用appendXML代码块。然而,当这种情况发生时,你正在进行一个标题重定向到同一个页面(我不知道为什么)。当THIS发生时,页面会重新加载,但在新页面中,您之前设置的所有post数据都没有设置。结果$_POST为空,而if语句失败,那么$_POST['myXML']也为空,这将清空您的XML。
如果出于某种原因需要重新加载页面,请考虑创建会话并将值存储在会话变量中。您还应该考虑对传入的数据进行清理,因为您当前的代码存在漏洞,有人可以将从浏览器传入的任何信息注入到服务器上的XML文件中。这可能不是什么大不了的事,但我总是担心有人会直接将任何未跳过的内容写入我系统上的文件。如果没有其他人可以用这个恶意地最大化你的驱动器空间。
- 带有显示XML数据的HTML的空白页
- 使用AJAX传递的数据编辑XML文件-正在删除XML数据
- 缩略图库的XML数据图像绑定
- 如何在Javascript中通过POST请求发送XML数据
- jQuery使用XML数据更新UL列表
- 将 XML 数据转换为 json 格式 AngularJS
- 如何在javascript(ajax)中使用嵌入HTML中的XML数据
- 使用JSONPjquery获取HTML格式的XML数据
- 将普通数据转换为xml数据的图像滑块
- 如何从加载到javascript中的导出XML数据中删除不需要的空格
- 使用Javascript在Html中将Xml数据或Json对象预览为Xml树
- 使用IE9更新XML数据孤岛
- 嵌套的XML数据和ExtJS模型关联
- 从javascript向Ashx处理程序发送xml数据,并在新窗口中显示响应
- 在jQuery中按日期对xml数据进行排序
- 使用XML数据在浏览器中使用数学
- 如何在 JQuery 中按日期对 xml 数据进行排序
- JSON / JQUERY - ajax post,如何在成功函数中处理 XML 数据
- 使用 JavaScript 显示和隐藏 PHP 回显的 XML 数据
- 使用 JavaScript 显示 XML 数据,在函数结束时出现问题