使用base64编码字符串将XML从Javascript发送到PHP

使用base64编码字符串将XML从Javascript发送到PHP,php,javascript,xml,base64,Php,Javascript,Xml,Base64,我必须通过Javascript将XML发送到PHP,我通过jQuery这样做: $.ajax({ url : 'http://myurl', type : 'POST', data : { documentXML : escape(xml) }, dataType : 'text', suc

我必须通过Javascript将XML发送到PHP,我通过jQuery这样做:

$.ajax({
           url             :   'http://myurl',
           type            :   'POST',
           data            :   { documentXML : escape(xml) },
           dataType        :   'text',
           success         :   function( data ) {
              // Do something
           },
           error           :   function() {
              alert('Failed to send ajax request!');
           }
        })
if(isset($_REQUEST['documentXML'])) {
    $receivedXML = urldecode($_REQUEST['documentXML']);
} else {
   die('<?xml version="1.0"?><error>No documentXML given.</error>');
}
我正在用PHP解码xml,如下所示:

$.ajax({
           url             :   'http://myurl',
           type            :   'POST',
           data            :   { documentXML : escape(xml) },
           dataType        :   'text',
           success         :   function( data ) {
              // Do something
           },
           error           :   function() {
              alert('Failed to send ajax request!');
           }
        })
if(isset($_REQUEST['documentXML'])) {
    $receivedXML = urldecode($_REQUEST['documentXML']);
} else {
   die('<?xml version="1.0"?><error>No documentXML given.</error>');
}
然而,在XML中嵌入了其他XML;这是通过base64编码嵌入的XML来完成的。在此过程中,base64将变为无效

鉴于更改XML结构或编码不是一个选项:

我能做什么? 我这样做是正确的方法吗?
谢谢。

当你说“变成无效”时,这是什么意思?生成的base64文本是什么样子的?此外,我认为您不需要转义并对POST数据进行URL解码;如果我不这样做,XML是无效的simplexml\u load\u字符串$rawXml返回FALSE。xml属性看起来是这样的:base64在这里失败了:然而,PHP转换了它,但是最终解码的xml的属性变成了一堆特殊的chars.Hm,扔掉了escape和urldecode,但在PHP中添加了stripslashed,这似乎是可行的。我来测试一下。