2014-09-02 4 views
1

У меня есть этот jquery code, который принимает переменную xml, анализируя ее и отображая ее в html-файле, и она работает так, как предполагалось. Проблема в том, что однажды я попытаюсь взять переменную xml из сценария php и передать эту переменную как входной код вышеупомянутого сценария jquery. Я получаю сообщение об ошибке в своем веб-браузере.Ошибка XML Parse

Мой сценарий:

<?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> 

Это полученная ошибка в веб-браузере, несмотря на, когда я даю тот же самый 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 =" ";' –

+0

На самом деле нет новых строк в моей переменной xml, пожалуйста, взгляните на мой отредактированный вопрос –

ответ

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, получающий ту же ошибку –

+0

@Amani Можете ли вы просмотреть источник и поделиться им где-нибудь, чтобы я мог видеть, что такое текущий вывод? Благодарю. –

+0

' Ошибка XML Parse: объявление XML или текста не в начале объекта Адрес: http: //swebsite/test.php Zeile Nr. 10, Spalte 11: var xml = ' '; ----------^ ' –

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

То же самое здесь –

+0

@Amani отредактировал его –

0

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

Пожалуйста, используйте код выше, чтобы получить правильный результат. Поскольку у вас есть двойные кавычки в вашем XML-документе, он не работал, если вы добавляете двойные кавычки, когда получаете значение в javacsript.