我有这个jquery code,它接受一个xml变量解析它并将其显示在一个html文件中,它按预期工作。 问题是,一旦我尝试从php脚本中获取xml变量并将此varibale作为上述jquery脚本的输入,我会在Web浏览器中收到错误消息。
我的剧本:
<?php
require('MyClass.php');
$Myparam = "0123641";
$built_request=new MyClass($Myparam);
$xml=$built_request->getResponse();// works fine and returns an xml variable represented as below
?>
<html lang="en">
<head>
<meta charset="utf-8"></meta>
<script src="//code.jquery.com/jquery-1.10.2.js"></script>
</head>
<BODY>
<p id="someElement"></p>
<script>
$(document).ready(function(){
var xml ="<?php echo $xml; ?>";
var d1 = $(xml).find('data[name="name2"]').attr('status');
$( "#someElement" ).append( d1 );
});
</script>
</BODY>
</html>
这是Web浏览器中获得的错误,尽管我在javascript中直接提供了相同的xml变量,但脚本可以正常工作。
XML Parse Error: XML or text declaration not at start of entity
var xml ="<?xml version="1.0" encoding="UTF-8"?>
--------------^
试图调查此问题我打印了我获得的变量,打印值如下:
<?xml version="1.0" encoding="UTF-8"?>
<data request-id="31236">
<data name="name1" code="0" code2="003404502" code3="">
<data name="name2" code1="34297502" time="2014-09-01" id="14c259b-bsdfgds8b5" leitcode="" code2="692748" order="false" piece-code="00363932" piece-status="0" identifier-type="2" pan-recipient-name="" street-name="" house-number="" city-name="" status="status x" error-status="0" code_name="code name" />
</data>
</data>
答案 0 :(得分:0)
您的内联JavaScript正在呈现为类似于:
的表单$(document).ready(function() {
var xml ="<?xml version="1.0" encoding="UTF-8"?>
<data request-id="ID">
... ";
var d1 = $(xml).find('data[name="name2"]').attr('status');
$( "#someElement" ).append( d1 );
});
注意xml
行:它在字符串本身内多次输出双引号。以下内容应解决此问题:
var xml = "<?= str_replace('"', '\"', $xml); ?>";
答案 1 :(得分:0)
我认为你应该改变代码:
var xml ="<?php echo $xml; ?>";
到
var xml ='<?php echo $xml; ?>';
<强> 编辑: 强>
我做了一个简单的测试:
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script>
var xml = '<?xml version="1.0" encoding="UTF-8"?> <data request-id="31236"><data name="name1" code="0" code2="003404502" code3=""> <data name="name2" code1="34297502" time="2014-09-01" id="14c259b-bsdfgds8b5" leitcode="" code2="692748" order="false" piece-code="00363932" piece-status="0" identifier-type="2" pan-recipient-name="" street-name="" house-number="" city-name="" status="status x" error-status="0" code_name="code name" /></data></data>'
var d1 = $(xml).find('data[name="name2"]').attr('status');
console.log(d1);
</script>
它的工作正常
输出:
status x
答案 2 :(得分:0)
var xml ='<?php echo $xml; ?>';
请使用上面的代码来获得正确的结果。由于你在xml文档中有双引号,如果在javacsript中获取值时放置双引号,它就不起作用。