我正在做一个项目,我将从谷歌地图 API 读取数据并将其转换为每个对象的 XML,然后将该 XML 存储在数组插槽中(这将发生多次,直到读取所有数据)然后我将对 PHP 文件的 Ajax POST 请求发送充满 XML 的数组和一个布尔值(让服务器知道它是哪个请求)。然后 PHP 将使用 SimpleXML 加载、使用接收到的数据编辑 XML,然后保存它。
我的问题是当我发出 ajax 请求时,Firebug 会识别一个POST
请求并发送所有正确的数据。它抛出一个302
(错误?)说Moved Temporarily
然后GET
发生一个请求(我认为这是由服务器启动的),它Undefined inded: ajax
在我询问布尔值(称为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');
}
}
?>