Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [prototype] dziwne, kod js nie dziala
Forum PHP.pl > Forum > Przedszkole
werek
poniżej znajduje sie kod (przygotowuje narazie komunikacje dla framework'a ktory pisze) ktory co gorsza nie dziala :/, naprawde nie wiem co jest nie tak ale kod nie chce dzialac (nawet alert). bylbym wdzieczny jezeli ktos znalazl by blad (a najlepiej rozwiazanie).

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Untitled Document</title>
  5. <script language="javascript" type="text/javascript" src='http://photo.wrxcore.com/public/js/prototype.js'></script>
  6. <script language="javascript" type="text/javascript" src='http://photo.wrxcore.com/public/js/scriptaculous.js'></script>
  7. <script language="javascript" type="text/javascript">
  8. var base='http://photo.wrxcore.com';
  9. function test(action){
  10. /*var module="Admin";
  11. var controller="Ajax";*/
  12. alert(action);
  13. /*var url=base + "/" + module + "/" + controller + "/" + action;
  14. $('test').innerHTML="</br>"+url;
  15. var rajax=new Ajax.Request(url,{ method: 'post', onSuccess: getResponse });*/
  16. }
  17. function getResponse(transport){
  18. var text=transport.responseText+"\n\n";
  19. text+=transpost.status+"\n\n";
  20. alert(text);
  21. }
  22. </head>
  23.  
  24. <body id="body">
  25. <input type="button" name="test" value="test" onclik="test('test');"/>
  26. <div id="test"></div>
  27. </body>
  28. </html>
nospor
Jaki to ma zwiazek z ajaxem?

Widziales kiedys zdarzenie onclik? Nie sądze. Spróbuj z onclick tongue.gif

ps: przenosze
werek
dzieki, sorki za zamieszanie, moj blad

pojawil sie drugi problem który sprawia mi duzy problem mianowicie:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  4. <title>Untitled Document</title>
  5. <script language="javascript" type="text/javascript" src='http://photo.wrxcore.com/public/js/prototype.js'></script>
  6. <script language="javascript" type="text/javascript" src='http://photo.wrxcore.com/public/js/scriptaculous.js'></script>
  7. <script language="javascript" type="text/javascript">
  8. var base='http://photo.wrxcore.com';
  9. function test(action){
  10. var url='/admin/ajax/test';
  11. var rajax=new Ajax.Request(url,{ method: 'post', onSuccess: getResponse , onFailure: failure });
  12. }
  13. function getResponse(transport){
  14. var text=transport.responseText+"\n\n";
  15. text+=transpost.status+"\n\n";
  16. //$('test').innerHTML='<pre>'+text+'</pre>';
  17. alert(text);
  18. }
  19. function failure(){
  20. alert('wystapil blad przy polaczeniu');
  21. }
  22. </head>
  23.  
  24. <body id="body">
  25. <input type="button" name="test" value="test" onclick="test('test');"/>
  26. <div id="test"></div>
  27.  
  28. </body>
  29. </html>


w/w to aktualny kod, request wykonuje sie poprawnie i pobranie rowniez jednak nie wykonuja sie funkcje powiazane ze zdarzeniem onSuccess i onFailure. moze mi ktos powiedziec czy poprawnie sa zadeklarowanee te funkcje??

sorki ale odnosnie skladni javascript jestem lekko w tyle. z gory dzieki za pomoc
uli
Wiesz co?

Nigdy z Ajaxem sie nie bawiłem, ale Ty w ogóle nie masz pojęcia o JS, a co dopiero o Ajaxie.

var rajax=new Ajax.Request(url,{ method: 'post', onSuccess: getResponse , onFailure: failure });

Co to za wywołanie funkcji?? ohmy.gif

var rajax=new Ajax.Request(url,{ method: 'post', onSuccess: getResponse(costam) , onFailure: failure() });

Jeśli już... Pytanie czym u Ciebie jest zmienna 'transport', ale to już Twoja broszka.
nospor
oj uli, uli....
Twoje pojecie o js wydaje się być na poziomie podstawowym, wiec nie krzycz na biedaka.

To co on podal to jest standardowe przypisanie callbacka. Zaś Twoj sposób wywali mase errorów, np cos w stylu undefined costam smile.gif

@werek hmmmm, dziwne. Wydaje się wszystko być ok. Jak bede miał chwilkę to popatrze dokładniej
werek
dla ulatwienia podam ze zwracam request'a z naglowkiem Content-Type: text/plain (bo o to mi wlasciwie chodzi)

prototype to fajne narzedzie, musze jeszcze znalezc metode jak dostac sie do odebranego xml'a (kiedy tak bede zwracal). w ramach wymiany ponizej klaska w php jak znalazl do uzytku z Zend Framework i prototype (iterowalna, sluzy raczej jako kontener danych) do przygotowania Response. z zalozenia miala rowniez obslugiwac requesty ale to dopisze jak wreszcie rozgryze cala komunikacje jaka stosuje prototype.

prosze bardzo:
  1. <?php
  2. class wrx_Ajax_Prototype implements Countable, Iterator {
  3. /**
  4.  * Iterator Patern
  5.  *
  6.  * @var int
  7.  */
  8. private $_index=0;
  9. /**
  10.  * przechowuje obiekt simpleXML
  11.  *
  12.  * @var SimpleXMLElement
  13.  */
  14. private $_xml;
  15. /**
  16.  * dane w formacie JSON
  17.  *
  18.  * @var string
  19.  */
  20. private $_json;
  21. /**
  22.  * dane naturalne
  23.  *
  24.  * @var array
  25.  */
  26. private $_data;
  27. /**
  28.  * naglowki dla konkretnych typow odpowiedzi
  29.  *
  30.  * @var array
  31.  */
  32. private $_headers=array(
  33. 'xml'=>wrx_Mime::TYPE_XML , // application/xml
  34. 'json'=>wrx_Mime::TYPE_JSON , //application/x-json
  35. 'plain'=>wrx_Mime::TYPE_TEXT // text/plain
  36. );
  37. /**
  38.  * ustawiony typ
  39.  *
  40.  * @var string
  41.  */
  42. private $_type;
  43. /**
  44.  * sprawdza czy żądanie jest wywolane przez ajax
  45.  *
  46.  * @return bool
  47.  */
  48. public static function isXMLHTTPRequest(){
  49. return ($_SERVER['HTTP_X_REQUESTED_WITH']=="XMLHttpRequest") ? true : false;
  50. }
  51. /**
  52.  * konstruktor i typ zwracanych wartosci
  53.  *
  54.  * @param string $type xml|json|plain
  55.  */
  56. public function __construct($type='xml'){
  57. if (array_key_exists($type,$this->_headers)) {
  58. $this->_type=$type;
  59. } else {
  60. $this->_type='xml';
  61. }
  62. }
  63. /**
  64.  * magiczna metoda wywolywana przy echo
  65.  *
  66.  */
  67. public function __toString(){
  68. header('Content-Type: '.$this->_headers[$this->_type]);
  69. echo $this->returnContent();
  70. }
  71. /**
  72.  * zwraca gotowa tresc dokumentu w zaleznosci od typu
  73.  *
  74.  * @return string
  75.  */
  76. public function returnContent(){
  77. $type=strtoupper($this->_type);
  78. $met='get'.$type;
  79. return $this->$met();
  80. }
  81. /**
  82.  * zwraca dane w formacie JSON
  83.  *
  84.  * @return string
  85.  */
  86. public function getJSON(){
  87. return Zend_Json::encode($this->_data);
  88. }
  89. /**
  90.  * zwraca dane w postaci XML
  91.  *
  92.  * @return string
  93.  */
  94. public function getXML(){
  95. $xml=simplexml_load_file(dirname(__FILE__).DIRECTORY_SEPARATOR.'Prototype.xml');
  96. $this->flatten2XML($this->_data,$xml);
  97. //var_dump($xml);
  98. return $xml->asXML();
  99. }
  100. /**
  101.  * zwraca dane jako text/plain
  102.  *
  103.  * @return string
  104.  */
  105. public function getPLAIN(){
  106. $plain="";
  107. $this->flatten2PLAIN($this->_data,$plain);
  108. return $plain;
  109. }
  110. /**
  111.  * metoda zapewniajaca rekurencyjne zalatwienie zaleznosci
  112.  *
  113.  * @param array $node
  114.  * @param SimpleXMLElement $xml
  115.  */
  116. private function flatten2XML($node, SimpleXMLElement $xml){
  117. foreach ($node as $k => $v) {
  118. if (is_array($v)) {
  119. $this->flatten2XML($v,$xml->addChild($k));
  120. } else {
  121. $xml->addChild($k,(string) $v);
  122. }
  123. }
  124. }
  125. /**
  126.  * metoda zapewniajaca rekurencyjne zalatwienie zaleznosci
  127.  *
  128.  * @param array $node
  129.  * @param string $string
  130.  */
  131. private function flatten2PLAIN($node,&$string){
  132. foreach ($node as $v) {
  133. if (is_array($v)) {
  134. $this->flatten2PLAIN($v,$string);
  135. } else {
  136. $string.= (string) $v . "\n";
  137. }
  138. }
  139. }
  140. /**
  141.  * magiczna metoda do pobierania wartosci
  142.  *
  143.  * @param string $name
  144.  * @return mixed
  145.  */
  146. public function __get($name){
  147. if (isset($this->_data[$name])) {
  148. return $this->_data[$name];
  149. }
  150. }
  151. /**
  152.  * magiczna metoda do zapisywania wartosci
  153.  *
  154.  * @param string $name
  155.  * @param mixed $value
  156.  */
  157. public function __set($name, $value){
  158. $this->_data[$name]=$value;
  159. }
  160. /**
  161.  * Support isset() overloading on PHP 5.1
  162.  *
  163.  * @param string $name
  164.  * @return boolean
  165.  */
  166. protected function __isset($name)
  167. {
  168. return isset($this->_data[$name]);
  169. }
  170.  
  171. /**
  172.  * Defined by Countable interface
  173.  *
  174.  * @return int
  175.  */
  176. public function count()
  177. {
  178. return count($this->_data);
  179. }
  180.  
  181. /**
  182.  * Defined by Iterator interface
  183.  *
  184.  * @return mixed
  185.  */
  186. public function current()
  187. {
  188. return current($this->_data);
  189. }
  190.  
  191. /**
  192.  * Defined by Iterator interface
  193.  *
  194.  * @return mixed
  195.  */
  196. public function key()
  197. {
  198. return key($this->_data);
  199. }
  200.  
  201. /**
  202.  * Defined by Iterator interface
  203.  *
  204.  */
  205. public function next()
  206. {
  207. next($this->_data);
  208. $this->_index++;
  209. }
  210.  
  211. /**
  212.  * Defined by Iterator interface
  213.  *
  214.  */
  215. public function rewind()
  216. {
  217. reset($this->_data);
  218. $this->_index = 0;
  219. }
  220.  
  221. /**
  222.  * Defined by Iterator interface
  223.  *
  224.  * @return boolean
  225.  */
  226. public function valid()
  227. {
  228. return $this->_index < count($this->_data);
  229. }
  230. }
  231. ?>


Prototype.xml:
  1. <?xml version='1.0' standalone='yes'?>
  2. <response>
  3. </response>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.