Witam
Jestem początkującym ajax-owiczem i mam problem z przsłaniem za pomocą ajax-a pliku zawierającego kod html i java script.
Plik do przesłania - edytor wizualny + pole <textarea>:
  1. <script language="javascript" type="text/javascript" src="../tiny_mce/tiny_mce.js"></script>
  2. <script language="javascript" type="text/javascript">
  3. tinyMCE.init({
  4. mode : "textareas",
  5. theme : "advanced",
  6. plugins : "table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,z
  7. om,flash,searchreplace,print,contextmenu",
  8. theme_advanced_buttons1_add_before : "save,separator",
  9. theme_advanced_buttons1_add : "fontselect,fontsizeselect",
  10. theme_advanced_buttons2_add : "separator,insertdate,inserttime,preview,zoom,separator,forecolor,backcolor",
  11. theme_advanced_buttons2_add_before: "cut,copy,paste,separator,search,replace,separator",
  12. theme_advanced_buttons3_add_before : "tablecontrols,separator",
  13. theme_advanced_buttons3_add : "emotions,iespell,flash,advhr,separator,print",
  14. theme_advanced_toolbar_location : "top",
  15. theme_advanced_toolbar_align : "left",
  16. theme_advanced_path_location : "bottom",
  17. plugin_insertdate_dateFormat : "%Y-%m-%d",
  18. plugin_insertdate_timeFormat : "%H:%M:%S",
  19. extended_valid_elements : "a[name|href|target|title|onclick],img[class|src|border=0|alt|title|hspace|v
    space|width|height|align|onmouseover|on
  20. ouseout|name],hr[class|width|size|noshade],font[face|size|color|style],span[clas
    s|align|style]",
  21. external_link_list_url : "example_data/example_link_list.js",
  22. external_image_list_url : "example_data/example_image_list.js",
  23. flash_external_list_url : "example_data/example_flash_list.js"
  24. }) ;
  25. </script>
  26.  


plik HttpClient.js:
  1. function HttpClient() {}
  2. HttpClient.prototype = {
  3. // typ get lub posr przekazany do metody open
  4. requestType:'POST',
  5. // jeśli ta zmienna ma wartość true wykonywane są wywołania asynchroniczne
  6. isAsync:false,
  7.  
  8. // gdzie przechowywany jest egzemplarz obiektu XMLHttpRequest?
  9. xmlhttp:false,
  10.  
  11. // jaka funkcja jest wywoływana po zakończonym powodzeniem wywołaniu asynchronicznym?
  12. callback:false,
  13.  
  14. // jaka funkcja jest wywoływana po wykonaniu metody send obiektu XMLHttpRequest?
  15. // Użyj własnej funkcji dla zdarzenia onSend, aby zastosować niestandardowy efekt wczytania.
  16. onSend:function() {
  17. document.getElementById('HttpClientStatus').style.display = 'block';
  18. },
  19.  
  20. // Funkcja wywołana, kiedy readyState ma wartość 4; jest ona
  21. // uruchamiana przed wywołaniem zwrotnym (callback).
  22. onLoad:function() {
  23. document.getElementById('HttpClientStatus').style.display = 'none';
  24. },
  25.  
  26. // funkcja wywołana po wystąbłędu http.
  27. onError:function(error) {
  28. alert(error);
  29. },
  30.  
  31. // metoda inicjiującobiekt XMLHttpRequest
  32. init:function() {
  33. try {
  34. // Mozilla, Safari
  35. this.xmlhttp = new XMLHttpRequest();
  36. } catch (e) {
  37. // Internet Explorer
  38. var XMLHTTP_IDS = new Array('MSXML2.XMLHTTP.5.0',
  39. 'MSXML2.XMLHTTP.4.0',
  40. 'MSXML2.XMLHTTP.3.0',
  41. 'MSXML2.XMLHTTP',
  42. 'Microsoft.XMLHTTP');
  43. var success = false;
  44. for(var i=0; i<XMLHTTP_IDS.length && !success; i++) {
  45. try {
  46. this.xmlhttp = new ActiveObject(XMLHTTP_IDS[i]);
  47. success = true;
  48. } catch (e) {}
  49. }
  50. if(!success) {
  51. this.onError('Nie można utworzyć obiektu XMLHttpRequest.');
  52. }
  53. }
  54. },
  55.  
  56. // Metoda zg&#322;aszaj&#261;ca &#380;&#261;danie strony
  57. // @param string url - strona, do której kierowane jest &#380;&#261;danie
  58. // @param string payload - wysy&#322;ane dane, j&#281;sli jest to &#380;&#261;danie typu POST
  59. // @divId - identyfikator bloku, który ma zosta&#263; zmieniony (w którym maj&#261; pobrane dane)
  60. makeRequest:function(url, payload, divId) {
  61. if(!this.xmlhttp) {
  62. this.init();
  63. }
  64. this.xmlhttp.open(this.requestType, url, this.isAsync);
  65.  
  66. this.xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  67.  
  68. // tu nale&#380;y ustawi&#263; onreadystatechange, poniewa&#380; w Mozilli stan zostanie wyzerowany
  69. // po zako&#324;czeniu wywo&#322;ania.
  70. var self = this;
  71. this.xmlhttp.onreadystatechange = function() {
  72. self._readyStateChangeCallback(divId); }
  73.  
  74. this.xmlhttp.send(payload);
  75.  
  76. if(!this.isAsync) {
  77. return this.xmlhttp.responseText;
  78. }
  79. },
  80.  
  81. // wewn&#281;trzna metoda s&#322;u&#380;&#261;ca do obs&#322;ugi zmian stanu.
  82. _readyStateChangeCallback:function(divId) {
  83. switch(this.xmlhttp.readyState) {
  84. case 2 :
  85. this.onSend();
  86. break;
  87. case 4 :
  88. this.onLoad();
  89. if(this.xmlhttp.status == 200) {
  90. this.callback(this.xmlhttp.responseText, divId);
  91. } else {
  92. this.onError('Błąd HTTP w czasie zgłaszania żądania: '+
  93. '['+this.xmlhttp.status+']'+
  94. ''+this.xmlhttp.statusText);
  95. }
  96. break;
  97. }
  98. }
  99. }


oraz plik funkcje.js ze skryptem odbierającym:
  1. var client3 = new HttpClient();
  2. client3.isAsync = true;
  3.  
  4.  
  5. client3.callback = function(result, divId) {
  6. eval(document.getElementById(divId).innerHTML = result);
  7. }
  8.  
  9.  
  10. function admin_str(link, divId, divId1, divId2) {
  11. var myRand = parseInt(Math.random()*99999999);
  12. var url = 'admin/include/test1.html?random='+myRand;
  13. client3.makeRequest(url, null, divId1);
  14. document.getElementById(divId).style.display = 'none';
  15. }

wolne parametry funkcji "admin_str(link, divId, divId1, divId2)" choć częściowo nie wykorzystywane nie są problemem - sprwdzałem


Problem w tym, że po przekazaniu za pomocą ajax plikt html z kodem html i js wyświetla się jedynie pole <textarea>.
Przy próbie wyświetlenia samego pliku do przesłania (edytor+textarea) wszystko jest ok.
Być może coś jest nie tak z użyciem funkcji eval() a może coś innego.
Proszę o wskazówki i pomoć
Pozdrawiam