2014-09-02 163 views
1

我有這個jquery code需要一個xml變量解析它並將其顯示在一個html文件中,它的工作原理與假設一樣。 問題是,一旦我嘗試從php腳本中獲取xml變量並將此varibale作爲上述jQuery腳本的輸入,我會在我的Web瀏覽器中收到一條錯誤消息。XML解析錯誤

我的腳本:

<?php 
require('MyClass.php'); 
$Myparam = ""; 
$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瀏覽器中所獲得的錯誤,儘管當我把這些相同的XML變量直接在JavaScript中,腳本工作。

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

問題似乎是你的字符串中的新行(我猜測它)...如果是這樣你需要逃避它...不知道如何在PHP中做...你將不得不改變'var xml =「<?php echo $ xml;?>」;;' – 2014-09-02 08:49:23

+0

實際上在我的xml變量中沒有新行可以請看看我編輯的問題 – 2014-09-02 08:50:31

回答

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); ?>"; 
+0

Iam得到相同的錯誤 – 2014-09-02 08:57:10

+0

@Amani Can you查看源代碼並在某處分享,以便我可以看到當前輸出是什麼?謝謝。 – 2014-09-02 10:14:58

+0

' XML解析錯誤:XML或文本聲明不在實體的開頭 地址:http://swebsite/test.php Zeile Nr。 10,Spalte 11: var xml ='<?xml version =「1.0」encoding =「UTF-8」?>'; ----------^' – 2014-09-02 11:15:35

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 
+0

同樣的事情在這裏 – 2014-09-02 11:05:45

+0

@Amani編輯它 – 2014-09-02 15:18:57

0

var xml ='<?php echo $xml; ?>';

請使用上面的代碼,以獲得正確的結果。由於在xml文檔中有雙引號,因此如果在javacsript中獲取值時放置雙引號,則不起作用。