我需要将来自 textarea 输入的 XML 数据发布到 PHP,以便解析它并输出一个表格。
我尝试了几种方法,但似乎都没有奏效。
目前我有这个:
jQuery('#btnRegistrarXML').live('click', function(){
var xml;
if (jQuery('#txtRegXML').val() == ""){
AddMsg('You must paste XML from the excel export into the textarea.', 'error');
} else {
jQuery.post('registrar-xml-to-table.php', {xml:escape(jQuery('#txtRegXML').val())}, function(data){
jQuery('#regXMLasTable').empty();
jQuery('#regXMLasTable').append(data);
});
}
displayMsgs();
});
PHP 是:
$xmlraw = urldecode($_POST['xml']);
$dom = new DOMDocument;
$dom->preserveWhiteSpace = FALSE;
$dom->loadXML($xmlraw);
$dom->formatOutput = TRUE;
$xmlstr = $dom->saveXml();
$xml = simplexml_load_string($xmlstr);
echo "<p>xmlraw:</p>";
echo $xmlraw;
echo "<p>xml:</p>";
echo $xml;
foreach ($xml->document as $doc) {
echo '<p class="alert alert-error">'.$doc->title.'</p>';
}
第一个 echo $xmlraw 正在工作 - 它在一行上输出 XML 字符串 - 帖子正在正确发送数据。
第二个 echo $xml 不输出任何内容,foreach 也不输出任何内容 - PHP 中的某些内容不起作用
我也尝试将 $xmlraw 直接加载到 simplexml_load_string($xmlraw) 但它不起作用 - 我假设是因为它的格式不正确?
我用来测试的 XML 是:
<?xml version="1.0"?>
<document>
<title>
Foobar
</title>
</document>
您可以将 XML 粘贴到此 ( http://tsdexter.com/webservice-testing/programs-list.php ) 页面上的文本区域中,然后如果您检查 xmlraw 下的元素:您可以看到原始 xml 字符串已回显 -但是,在 xml: 下面什么都没有,foreach 也没有输出任何东西。
这是一个 jsFiddle,因此您可以看到 HTML/JS——它实际上并没有做任何事情,因为它不能 ajax 到 PHP 页面——所以我在上面包含了 PHP 版本来测试。http://jsfiddle.net/tsdexter/EDqQB/
有任何想法吗?