anzeige

Ajax Problem


Seite: 1
Autor Beitrag
Abgemeldet
25.08.10 - 14:14:32 Uhr

Hallo,
mit folgenden ajax script werden für die joomla komponente sobi2 subkategorien geladen wenn man auf ein plus klickt. ich habe dies nun in jomsocial eingebaut und es gibt probleme. merkwürdig ist, dass das script zweimal verwendet wird. im einen interface (profil bearbeiten) funktioniert es und wenn man beim registrieren das script benutzt gibt er folgenden fehler: There was a problem with the request.

  1. <script type="text/javascript">  
  2.         <!--  
  3.         /* <![CDATA[ */  
  4.             var stmcid = 0;  
  5.             var smtLastNode = 37;  
  6.             var smtImgs = new Array();  
  7.             var smtImgMatrix = new Array();  
  8.             var smtParents = new Array();  
  9.             var smtSemaphor = 0;  
  10.               
  11.              smtImgs['root'] = 'http://yousquid.com/components/com_sobi2/images/base.gif';  
  12.              smtImgs['join'] = 'http://yousquid.com/components/com_sobi2/images/join.gif';  
  13.              smtImgs['joinBottom'] = 'http://yousquid.com/components/com_sobi2/images/joinbottom.gif';  
  14.              smtImgs['plus'] = 'http://yousquid.com/components/com_sobi2/images/plus.gif';  
  15.              smtImgs['plusBottom'] = 'http://yousquid.com/components/com_sobi2/images/plusbottom.gif';  
  16.              smtImgs['minus'] = 'http://yousquid.com/components/com_sobi2/images/minus.gif';  
  17.              smtImgs['minusBottom'] = 'http://yousquid.com/components/com_sobi2/images/minusbottom.gif';  
  18.              smtImgs['folder'] = 'http://yousquid.com/components/com_sobi2/images/folder.gif';  
  19.              smtImgs['folderOpen'] = 'http://yousquid.com/components/com_sobi2/images/folderopen.gif';  
  20.              smtImgs['line'] = 'http://yousquid.com/components/com_sobi2/images/line.gif';  
  21.              smtImgs['empty'] = 'http://yousquid.com/components/com_sobi2/images/empty.gif';  
  22.  
  23.              smtImgMatrix[3] = new Array('plus');  
  24.              smtImgMatrix[4] = new Array('plus');  
  25.              smtImgMatrix[5] = new Array('plus');  
  26.              smtImgMatrix[6] = new Array('plus');  
  27.              smtImgMatrix[7] = new Array('plus');  
  28.              smtImgMatrix[8] = new Array('plus');  
  29.              smtImgMatrix[9] = new Array('plus');  
  30.              smtImgMatrix[10] = new Array('plus');  
  31.              smtImgMatrix[11] = new Array('plus');  
  32.              smtImgMatrix[12] = new Array('plus');  
  33.              smtImgMatrix[13] = new Array('plus');  
  34.              smtImgMatrix[14] = new Array('plus');  
  35.              smtImgMatrix[15] = new Array('plus');  
  36.              smtImgMatrix[16] = new Array('plus');  
  37.              smtImgMatrix[17] = new Array('plus');  
  38.              smtImgMatrix[18] = new Array('plus');  
  39.              smtImgMatrix[19] = new Array('plus');  
  40.              smtImgMatrix[20] = new Array('plus');  
  41.              smtImgMatrix[21] = new Array('plus');  
  42.              smtImgMatrix[22] = new Array('plus');  
  43.              smtImgMatrix[23] = new Array('plus');  
  44.              smtImgMatrix[24] = new Array('plus');  
  45.              smtImgMatrix[25] = new Array('plus');  
  46.              smtImgMatrix[26] = new Array('plus');  
  47.              smtImgMatrix[27] = new Array('plus');  
  48.              smtImgMatrix[28] = new Array('plus');  
  49.              smtImgMatrix[29] = new Array('plus');  
  50.              smtImgMatrix[30] = new Array('plus');  
  51.              smtImgMatrix[31] = new Array('plus');  
  52.              smtImgMatrix[32] = new Array('plus');  
  53.              smtImgMatrix[33] = new Array('plus');  
  54.              smtImgMatrix[34] = new Array('plus');  
  55.              smtImgMatrix[35] = new Array('plus');  
  56.              smtImgMatrix[36] = new Array('plus');  
  57.              smtImgMatrix[37] = new Array('plusBottom');  
  58.  
  59.                 function stmExpand(catid, deep) {  
  60.                 stmcid = catid;  
  61.                 url = "index2.php?option=com_sobi2&catid=" + stmcid + "&no_html=1&sobi2Task=SigsiuTreeForm";  
  62.                 stmMakeRequest(url,deep,catid)  
  63.             }  
  64.             function in_array (needle, haystack, argStrict) {  
  65.                 var key = '', strict = !!argStrict;   
  66.                 if (strict) {  
  67.                     for (key in haystack) {  
  68.                         if (haystack[key] === needle) {  
  69.                             return true;            }  
  70.                     }  
  71.                 } else {  
  72.                     for (key in haystack) {  
  73.                         if (haystack[key] == needle) {                return true;  
  74.                         }  
  75.                     }  
  76.                 }  
  77.                  return false;  
  78.             }  
  79.             function addClicked(name,input) {  
  80.                 // etwas ausgewähltes aus dem Zwischenspeicher entfernen  
  81.                 if(document.getElementById(input).checked == false) {  
  82.                     //alert("Entferne Element:\nListe: "+document.getElementById('clicked').value+"\nWort: "+"#" + name.replace("&", "&amp;"));  
  83.                     document.getElementById('selCat').value = document.getElementById('selCat').value.replace(name.replace("&", "&amp;") + "#", "");  
  84.                 } else {  
  85.                     document.getElementById('selCat').value = document.getElementById('selCat').value + name.replace("&", "&amp;") + "#";  
  86.                 }  
  87.             }  
  88.             function stmAddSubcats(XMLDoc,deep,ccatid) {  
  89.                 var categories = XMLDoc.getElementsByTagName('category');  
  90.                 var subcats = "";  
  91.                 deep++;  
  92.                 for(i = 0; i < categories.length; i++) {  
  93.                     var category = categories[i];  
  94.                     var catid = category.getElementsByTagName('catid').item(0).firstChild.data;  
  95.                     var name = category.getElementsByTagName('name').item(0).firstChild.data;  
  96.                     var introtext = category.getElementsByTagName('introtext').item(0).firstChild.data;  
  97.                     var parentid = category.getElementsByTagName('parentid').item(0).firstChild.data;  
  98.                     var url = category.getElementsByTagName('url').item(0).firstChild.data;  
  99.                     var childs = category.getElementsByTagName('childs').item(0).firstChild.data;  
  100.                     var join = "<img src='"+smtImgs['join']+"' alt=''>";  
  101.                     var childContainer = "";  
  102.                     var margin = "";  
  103.                     name = name.replace("\", "");  
  104.                     introtext = introtext.replace("\", "");  
  105.                     url = url.replace("\\", "");  
  106.                     for(j = 0; j < deep; j++) {  
  107.                         if(smtImgMatrix[parentid][j]) {  
  108.                             switch(smtImgMatrix[parentid][j]) {  
  109.                                 case 'empty':  
  110.                                 case 'plusBottom':  
  111.                                 case 'minusBottom':  
  112.                                     image = 'empty';  
  113.                                     break;  
  114.                                 case 'plus':  
  115.                                 case 'minus':  
  116.                                 case 'line':  
  117.                                     image = 'line';  
  118.                                     break  
  119.                             }  
  120.                         }  
  121.                         else {  
  122.                             image = 'empty';  
  123.                         }  
  124.                         if(!smtImgMatrix[catid]) {  
  125.                             catArray = new Array();  
  126.                             catArray[j]  = image;  
  127.                             smtImgMatrix[catid] = catArray;  
  128.                         }  
  129.                         else {  
  130.                             smtImgMatrix[catid][j] = image;  
  131.                         }  
  132.                         margin = margin + "<img src='"+ smtImgs[image] +"' style='border-style:none;' alt=''/>";  
  133.                     }  
  134.                     if(childs == 1) {  
  135.                         join = "<a href='javascript:stmExpand(" + catid + ", " + deep + ");' id='sobi2CatsForm_imgUrlExpand" + catid + "'><img src='"+ smtImgs['plus'] + "' id='sobi2CatsForm_imgExpand" + catid + "'  style='border-style:none;' alt='expand'/></a>";  
  136.                         smtImgMatrix[catid][j] = 'plus';  
  137.                     }  
  138.                     if(stmcid == smtLastNode) {  
  139.                         line = "<img src='"+smtImgs['empty']+"' alt=''>";  
  140.                     }  
  141.                     if(i == categories.length - 1) {  
  142.                         if(childs == 1) {  
  143.                             join = "<a href='javascript:stmExpand(" + catid + ", " + deep + ");' id='sobi2CatsForm_imgUrlExpand" + catid + "'><img src='"+ smtImgs['plusBottom'] + "' id='sobi2CatsForm_imgExpand" + catid + "'  style='border-style:none;' alt='expand'/></a>";  
  144.                             smtImgMatrix[catid][j] = 'plusBottom';  
  145.                         }  
  146.                         else {  
  147.                             join = "<img src='"+smtImgs['joinBottom']+"' style='border-style:none;' alt=''/>";  
  148.                             smtImgMatrix[catid][j] = 'joinBottom';  
  149.                         }  
  150.                     }  
  151.                     alert("yessjo");  
  152.                     selCat = document.getElementById('selCat').value;  
  153.                     selCat = selCat.split("#");  
  154.                     zwCat = document.getElementById('clicked').value;  
  155.                     zwCat = zwCat.split("#");  
  156.                       
  157.                     if(in_array( name, selCat ) || in_array( name, zwCat )) {   
  158.                       selected = ' checked="checked"';  
  159.                     } else {  
  160.                       selected = '';  
  161.                     }  
  162.                       
  163.                     subcats = subcats + "<div class='sigsiuTreeNode' style=\"margin-bottom:5px;\">" + margin  + join + "<img src='"+smtImgs['folder']+"' id='sobi2CatsForm_imgFolder" + catid + "' alt='' style=\"margin-right:3px;\"> <label class=\"lblradio-block\"><input type=\"checkbox\" name=\"field16[]\" value=\"" + name + "\"" + selected + " class=\"checkbox  required validate-custom-checkbox\" style=\"position:relative;top:2px;\" onclick=\"addClicked('" + name + "','sobi2CatsForm_input" + catid + "');\" id='sobi2CatsForm_input" + catid + "' /> " + name + "</label></div>";  
  164.                     if(childs == 1) {  
  165.                         subcats = subcats + "<div class='clip' id='sobi2CatsForm_childsContainer" + catid + "' style='display: block;  display:none;'></div>"  
  166.                     }  
  167.                 }  
  168.                 var childsCont = "sobi2CatsForm_childsContainer" + ccatid;  
  169.                 document.getElementById(childsCont).innerHTML = subcats;  
  170.             }  
  171.             function stmMakeRequest(url,deep,catid) {  
  172.                 var stmHttpRequest;  
  173.                 if (window.XMLHttpRequest) {  
  174.                     stmHttpRequest = new XMLHttpRequest();  
  175.                     if (stmHttpRequest.overrideMimeType) {  
  176.                         stmHttpRequest.overrideMimeType('text/xml');  
  177.                     }  
  178.                 }  
  179.                 else if (window.ActiveXObject) {  
  180.                     try { stmHttpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }  
  181.                         catch (e) {  
  182.                            try { stmHttpRequest = new ActiveXObject("Microsoft.XMLHTTP"); }  
  183.                            catch (e) {}  
  184.                          }  
  185.                 }  
  186.                 if (!stmHttpRequest) {  
  187.                     alert('Sorry but I Cannot create an XMLHTTP instance');  
  188.                     return false;  
  189.                 }  
  190.                 stmHttpRequest.onreadystatechange = function() { stmGetSubcats(stmHttpRequest,deep,catid); };  
  191.                 stmHttpRequest.open('GET', url, true);  
  192.                 stmHttpRequest.send(null);  
  193.             }  
  194.             function stmGetSubcats(stmHttpRequest,deep,catid) {  
  195.                 if (stmHttpRequest.readyState == 4) {  
  196.                     if (stmHttpRequest.status != 200) {  
  197.                         document.getElementById("sobi2CatsForm_imgFolder"+catid).src = smtImgs['folderOpen'];  
  198.                          if(stmcid == smtLastNode) {  
  199.                              document.getElementById("sobi2CatsForm_imgExpand"+catid).src = smtImgs['minusBottom'];  
  200.                          }  
  201.                          else if(document.getElementById("sobi2CatsForm_imgExpand"+catid).src == smtImgs['plusBottom']){  
  202.                              document.getElementById("sobi2CatsForm_imgExpand"+catid).src = smtImgs['minusBottom'];  
  203.                          }  
  204.                          else {  
  205.                              document.getElementById("sobi2CatsForm_imgExpand"+catid).src = smtImgs['minus'];  
  206.                          }  
  207.                          document.getElementById("sobi2CatsForm_imgUrlExpand"+catid).href = "javascript:stmColapse(" + catid + ", " + deep + ");";  
  208.                          document.getElementById("sobi2CatsForm_childsContainer" + catid).style.display = "";  
  209.                          stmAddSubcats(stmHttpRequest.responseXML,deep,catid);  
  210.                     }  
  211.                     else {  
  212.                         alert('There was a problem with the request.');  
  213.                     }  
  214.                 }  
  215.             }  
  216.             function stmColapse(id, deep) {  
  217.                 document.getElementById("sobi2CatsForm_childsContainer" + id).style.display = "none";  
  218.                 document.getElementById("sobi2CatsForm_imgFolder"+id).src = smtImgs['folder'];  
  219.                 if(id == smtLastNode) {  
  220.                     document.getElementById("sobi2CatsForm_imgExpand"+id).src = smtImgs['plusBottom'];  
  221.                 }  
  222.                    else if(document.getElementById("sobi2CatsForm_imgExpand"+stmcid).src == smtImgs['minusBottom']){  
  223.                      document.getElementById("sobi2CatsForm_imgExpand"+stmcid).src = smtImgs['plusBottom'];  
  224.                 }  
  225.                 else {  
  226.                     document.getElementById("sobi2CatsForm_imgExpand"+id).src = smtImgs['plus'];  
  227.                 }  
  228.                 document.getElementById("sobi2CatsForm_imgUrlExpand"+id).href = "javascript:stmExpand(" + id  + ", " + deep + ");";  
  229.             }  
  230.         /* ]]> */  
  231.         // -->  
  232.         </script>  
  233.  


Kann mir jemand helfen und mir sagen, woher der fehler kommt und wie ich ihn wo möglich beseitigen kann.

vielen dank schonma für eure mühen
liebe grüße
SammysHP
25.08.10 - 15:15:50 Uhr

Was ist "sobi2"? Was sagt die Fehlerkonsole? Was sagt Firebug? An welcher Stelle bleibt der Request hängen? Hast du eine Beispielseite?

_________________
www.sammyshp.de
Abgemeldet
25.08.10 - 16:19:55 Uhr

Hallo Sammy,
also Fehlerkonsole gibt kein Fehler. Was ich herausgefunden habe ist, dass der Request nie den Status 200 bekommt, deswegen schlägt die if abfrage in zeile 96 false an. Aus irgendeinen grund gehts auf der einen seite (profil beabreiten) und beim registrieren nicht. was ist nötig damit der status des request 200 gibt?
lg

[EDIT] omg jetzt kommt der fehler genau auf der anderen seite, was aber anders ist weiß ich net
SammysHP
25.08.10 - 16:44:17 Uhr

Externes Bild: http://informationen.pytalhost.de/pytal-buttons/bitteangebenurlzurwebpraesenz.png

Wie sieht denn der Request aus und wie die Antwort (inkl. Header bitte)?

_________________
www.sammyshp.de
Michi
25.08.10 - 17:45:41 Uhr

Mit 'nem Link wäre das Ausprobieren einfacher...

Tipp:
Mit der Firefox-Erweiterung TamperData kann man relativ einfach Request abfangen, (optional) manipulieren und vor allem die Antwort vom Server inkl. aller Response-Header direkt einsehen. Das hilft beim Debuggen ziemlich, vor allem siehst du, welcher Statuscode vom Server kommt, und welchen Inhalt er schickt.
(Falls du diese Infos nicht sowieso schon hattest...)

Link:
https://addons.mozilla.org/de/firefox/addon/966/
SammysHP
25.08.10 - 19:30:32 Uhr

Das scheint ein Fork eines Teils von Firebug bzw. andersrum zu sein. Die reine Analyse ist in Firebug ja auch drin.

_________________
www.sammyshp.de
Abgemeldet
01.09.10 - 11:53:41 Uhr

vielen dank für eure hilfe.

ich habe mit firebug mal den request angeschaut und festgestellt, dass es zu einem xml fehler kommt:

XML-Verarbeitungsfehler: Kein Element gefunden Adresse: moz-nullprincipal: {e7d08eba-394e-4822-b0dc-a37d71017011) Zeile Nr. 1, Spalte 1: ^

merkwürdig finde ich auch, dass es auf vista firefox 3.6.8 geht aber nicht auf xp mit dem gleichen firefox. ich habe auch schonmal versucht alle add ons auszuschalten, kein erfolg.

jemand eine idee?
SammysHP
01.09.10 - 12:20:54 Uhr

Solange du uns keinen Link dazu gibst: Nein.

_________________
www.sammyshp.de
Abgemeldet
01.09.10 - 15:08:21 Uhr

so, das problem wurde jetzt gelöst

der fehler lag im script am stmHttpRequest.status der ergab bei manchen browsern 0

dieses problem hat schon vielen probleme gemacht doch es gibt eine einfache und simple lösung:

[Quelle: http://www.ajax-community.de/javascript/8376-problem-xmlhttprequest-status-0-a.html]

Wenn die Seite unter example.de - Ankndigung Ausstellung Oktoberfest Mnchen aufgerufen wurde war die Url "http://example.de" für Firefox nicht Teil der Subdomain www und wurde damit aus Sicherheitsgründen geblockt.

also musste ich im request nur ein www. vorschreiben und das problem war behoben. sollte man die registrierung nun das ganze ohne www. in der urlleiste machen gibts wieder ein fehler. am besten also mit javascript url bestimmen.

vielen dank hiernochma an sammyhp

mfg
Seite: 1

- Obige Beiträge stellen keine Äußerung oder Meinung von Pytal oder dessen Betreiber dar -