Ktoś wie co może to oznaczać? Taki błąd się pojawia w konsoli błędów firefoxa.
<span style="font-weight: bold;"><a href="http://pl.php.net/
Błąd: instrukcja przetwarzania xml nie jest na początku jednostki zewnętrznej
Plik źródłowy: http://..........................
Wiersz: 2, Kolumna: 1
Kod źródłowy:
<?xml version="1.0" encoding="utf-8" ?><xjx><cmd n="as" t="div5_katalog_content" p="innerHTML"><![CDATA[firma]]></cmd></xjx>^
" title="Zobacz w manualu PHP" target="_manual">
Błąd: instrukcja przetwarzania xml nie jest na początku jednostki zewnętrznej
Plik źródłowy: http://..........................
Wiersz: 2, Kolumna: 1
Kod źródłowy:
<?xml version="1.0" encoding="utf-8" ?><xjx><cmd n="as" t="div5_katalog_content" p="innerHTML"><![CDATA[firma]]></cmd></xjx>^
</a></span>
Korzystam z xajax + smarty. Wszysta działa dobrze jeżeli szablon wyglada mniej wiecej tak:
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
  2. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. {$xajax->printJavascript()}
  4. <tr><td>
  5. {$links}
  6. <div id="div5_katalog_content"></div>
  7. </td>
  8. </tr>
  9. </body>
  10. </html>


  1. <?php
  2. require_once('../config.inc');
  3. require_once("xajax.inc.php");
  4. $xajax = new xajax();
  5. $xajax->registerFunction("getFirmy");
  6.  
  7. function getFirmy($letter){
  8. global $db_handle;
  9. $l = substr($letter,0,1);
  10. $sql = "SELECT t1.id,t1.nazwa FROM abcd t1 WHERE t1.nazwa LIKE '$l%' ORDER BY t1.nazwa ASC";
  11. $res = $db_handle->getAll($sql);
  12. if(DB::isError($res)){
  13. die($res->getDebugInfo().':'.__FILE__.':'.__FUNCTION__.':'.__LINE__);
  14. }
  15. $smarty = new Smarty();
  16. $smarty->assign_by_ref('katalog',$res);
  17. $html_result = $smarty->fetch('div_katalog.tpl');
  18. $objResponse = new xajaxResponse();
  19. $objResponse->addAssign('div5_katalog_content', 'innerHTML', $html_result);
  20. return $objResponse->getXML();
  21. }
  22. $letters = array('A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z');
  23. $xajax->processRequests();
  24. foreach ($letters as $val) {
  25. $links .= '<a href="java script:void(0)" onclick="xajax_getFirmy(''.$val.'');">'.$val.'</a>'."n";
  26. }
  27.  
  28. $smarty = new Smarty();
  29. $smarty->assign_by_ref('links',$links);
  30. $smarty->assign_by_ref('xajax',$xajax);
  31. $smarty->display('katalog_ajax_bak.tpl');
  32. ?>

jeżeli go rozbuduje o dodatkowy kod to się pojawia błąd. Nie wiem czy to wina nie poprawnie zbudowanego xhtmla, xmla, bialych znaków czy czegoś innego...

...
dodam jeszcze ze podobny efekt uzysuje sztucznie jak dodam spacje lub nową linie do zwracanego XMLa
Kod
...
return "\n".$objResponse->getXML();
...

ale mimo to nie jestem w stanie zlokalizowac momentu kiedy ten znak jest dodawany. Próbowałem trimować zwracany kod html, zamieniać wszystkie znaki nowej lini na puste stringi i nic to nie daje...
Kod
$html = $smarty->fetch('xyz.tpl');
$html = trim($html);
$html = str_replace("\n","",$html);
$html = str_replace(0x10,"",$html);

ma ktoś jakiś pomysł jak się bozbyć tych białych znaków i czy nie musze przypadkiem na poziomie JavaScripta tego zrobić?

*************
udało się rozwiązać problem. rozwiązanie jest tu http://community.xajaxproject.org/viewtopic.php?pid=9735 i w skrócie chodziło o to, że jeden z dołączanych plików php po kończącym tagu "?>" miał pacnięte entery... taki banalny błąd potrafi na kilka dni powstrzymać prace (całe szczęście nie mój smile.gif ).