WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Ajax fungerar endast i FF (https://www.wn.se/forum/showthread.php?t=30684)

Kristoffer G 2008-07-22 02:49

Jag lyckas inte få följande att fungera i någon annan webbläsare än Firefox... Jag får inga felmeddelanden eller någontingm kan inte se vad som är fel. Webbläsaren kontrolleras ju trots allt.

Kod:

<script language="Javascript">
function xmlhttpPost(strURL) {
  var xmlHttpReq = false;
  var self = this;
  // Mozilla/Safari
  if (window.XMLHttpRequest) {
    self.xmlHttpReq = new XMLHttpRequest();
  }
  // IE
  else if (window.ActiveXObject) {
    self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
  }
  self.xmlHttpReq.open('POST', strURL, true);
  self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
  self.xmlHttpReq.onreadystatechange = function() {
       
 
  if (self.xmlHttpReq.readyState == 1) {
      updatepage('<br /><br /><img src="loader.gif" border="0" alt="" style="margin-left:15px;" />');
    }

 
    if (self.xmlHttpReq.readyState == 4) {
      updatepage(self.xmlHttpReq.responseText);
    }
  }
  self.xmlHttpReq.send(getquerystring());
}

function getquerystring() {
  var form  = document.forms['feeds'];
  var word = form.feed.value;
  qstr = 'feed=' + escape(word);
  return qstr;
}

function updatepage(str){
  document.getElementById("result").innerHTML = str;
}
</script>


hnn 2008-07-22 05:25

Använd ett bibliotek som Prototype, JQuery eller liknande. Onödigt att behöva uppfinna hjulet igen.

turboraketti 2008-07-22 07:42

Håller med om att jquery m.fl. med fördel kan användas till sånt här, men det är ju förstås värdefullt att kunna grunderna också, så jag föreslår att denna tråd ägnas åt att hitta felet i Brazzans kod.

Är du säker på att XMLHttpRequest-objektet skapas korrekt i MSIE (går den vidare till ActiveX-koden)? Om man kollar på Peter Paul-Kochs metod (http://www.quirksmode.org/js/xmlhttp.html) så anser han sig tydligen vara tvungen att använda try{}catch(){} och inte bara kolla ifall window.XMLHttpRequest finns. Kanske finns en anledning...

En fråga: Varför lägger du objektet i "this" ("self")? Det kan finnas problem med det beroende på hur funktionen anropas. Se http://www.quirksmode.org/js/events_advanced.html (under rubriken Drawbacks).
/C#

hnn 2008-07-22 07:47

om du byter ut POST mot GET?

Om du använder POST, kanske den förväntar sig att få data postat?

Kristoffer G 2008-07-22 14:02

Vill bara förklara att jag har nada koll på javascript/Ajax... denna koder är ihopklistrad... men fungerar med FF. Jag har provat byta ut POST mot GET... samma resultat... jag har provat ta bort self och kört med this...samma resultat.

Det måste ligga i webbläsarkontrollen. Jag har kikat på Peter Paul-Kochs sätt att kontrollera läsare, men jag får inte till det i min egen kod.

turboraketti 2008-07-22 14:10

Jag föreslår att du tar bort både self och this, dvs:
Kod:

xmlHttpReq = new XMLHttpRequest();
osv... Du gör ju "var xmlHttpReq = false;", så det känns ju vettigt att fortsätta använda den variabeln.

Du kan också skjuta in ett "alert('Hej MSIE');" i andra if-satsen för att kontrollera att MSIE kommer dit (alert gör en enkel popup med ok-knapp).

Kristoffer G 2008-07-22 15:06

Har provat det du säger... har plockat bort self och this.. fortfaranda samma sak (fungerar i FF men inte de andra).

Jag har även provat lägga till en alert i IE kontrollen... den ploppar inte upp... så det är väl där problemet ligger.

Men å andra sidan så fungerar det inte i Safari heller.

Kristoffer G 2008-07-22 15:09

Så här ser formuläret ut

Citat:


<html>
<head>
<script type="text/javascript" src="js/fetch.js"></script>
</head>
<body>
<form name="feeds" action="index.html" method="post">
<select name="feed">
<option value="">Välj</option>
<option value="http://www.geiser.se/feed" onclick='JavaScript:xmlhttpPost("show_feed.php")'> Geiser.se</option>
<option value="http://feeds.feedburner.com/tkjblogg?format=xml" onclick='JavaScript:xmlhttpPost("show_feed.php")'> TkJ</option>
<option value="http://www.dan.se/feed" onclick='JavaScript:xmlhttpPost("show_feed.php")'> Dan.se</option>
</select>

<div id="result"></div>
</form>
</body>
</html>


turboraketti 2008-07-22 15:14

Ta bort "Javascript:" från onclick. Det ska bara finnas om du lägger javascript i href-attributet. Gissar att FF fattar vad du menar, men andra webbläsare genomskådar det inte (tror jag).

Kristoffer G 2008-07-22 15:20

Samma effekt... fungerar bara i FF.


Alla tider är GMT +2. Klockan är nu 12:25.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson