Forum » Programiranje » [Ajax in Java] v IE6 dela, v Firefoxu ne
[Ajax in Java] v IE6 dela, v Firefoxu ne
Fizikalko ::
Torej, delam eno formo v jsp-ju in pač bi rad naredil en enostaven autocomplete. V IE dela super, v FF pa se ne zgodi nič. kakšna ideja?
Aja, valda mam kreiranje request objekta ločeno za FF in IE posebej (XmlHttpRequest in ActiveObject...).
Aja, valda mam kreiranje request objekta ločeno za FF in IE posebej (XmlHttpRequest in ActiveObject...).
- spremenilo: snow ()
[MYTiX] ::
Sicer jsp ne poznam, ampak mislim, da je tukaj napaka na frontendu, torej v JavaScriptu.
Uporabi Firebug extension za FF, ki je zelo uporaben za debugiranje javascripta.
Si pa dal premalo informacij, da bi lahko kaj bolj natančnega sklepal (js koda?).
Uporabi Firebug extension za FF, ki je zelo uporaben za debugiranje javascripta.
Si pa dal premalo informacij, da bi lahko kaj bolj natančnega sklepal (js koda?).
podpis
Fizikalko ::
Koda je taka (čist simpl):
var req;
function getCity(){
var key = document.getElementById("textfield");
var url = "../ajaxOFFresponse?key="+ escape(key.value);
if (window.XMLHttpRequest){
req = new XMLHttpRequest();
}
else if (window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("Get",url,true);
req.onreadystatechange = callback;
req.send(null);
}
function callback(){
if (req.readyState==4){
if (req.status == 200){
var textback = document.getElementById('textfield');
textback.value = req.responseText;
}
}
}
function focusIn(){
document.getElementById("textfield").focus();
}
var req;
function getCity(){
var key = document.getElementById("textfield");
var url = "../ajaxOFFresponse?key="+ escape(key.value);
if (window.XMLHttpRequest){
req = new XMLHttpRequest();
}
else if (window.ActiveXObject){
req = new ActiveXObject("Microsoft.XMLHTTP");
}
req.open("Get",url,true);
req.onreadystatechange = callback;
req.send(null);
}
function callback(){
if (req.readyState==4){
if (req.status == 200){
var textback = document.getElementById('textfield');
textback.value = req.responseText;
}
}
}
function focusIn(){
document.getElementById("textfield").focus();
}
Fizikalko ::
Servlet pa po logiki takle:
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxResponseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String key = req.getParameter("key");
if (key != null && key.equalsIgnoreCase("L") ) {
// extract the first character from key
// setup the response
key = "LJU";
}
res.setContentType("text/xml");
res.setHeader("Cache-Control", "no-cache");
// write out the response string
res.getWriter().write(key);
}
}
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class AjaxResponseServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet(HttpServletRequest req, HttpServletResponse res)
throws ServletException, IOException {
String key = req.getParameter("key");
if (key != null && key.equalsIgnoreCase("L") ) {
// extract the first character from key
// setup the response
key = "LJU";
}
res.setContentType("text/xml");
res.setHeader("Cache-Control", "no-cache");
// write out the response string
res.getWriter().write(key);
}
}
Fizikalko ::
Ne, v RAD-u (IBM Rational Application Developer, java server je torej Websphere, ampak to najbrž nima veze).
Fizikalko ::
Zanimivo je to, da mi en podoben primerček dela povsod. Razlika je le ta, da gre tule za skripto, ki je v oknu, do katerega se pride po par korakih preko https.
[MYTiX] ::
Nisem opazu nobene napake, ne v js, ne v java kodi. A lahko ugotoviš če se v firefoxu sploh sproži request?
podpis
Fizikalko ::
Mater, v servletu sem naštimal breakpoint, pa sploh noter ne preide (v servlet). pri IE se seveda pride noter, a se na breakpointu ustavi. Torej je problem, da sploh ne pokliče servleta... Kakšna ideja?
ender ::
Poizkusi namesto req.send(null); uporabiti req.send(''); - se mi zdi, da sem imel isti problem s Firefoxom (med tem, ko je v Operi delalo).
There are only two hard things in Computer Science:
cache invalidation, naming things and off-by-one errors.
cache invalidation, naming things and off-by-one errors.
Fizikalko ::
Hja, zadnja vrstica, do katere pride,je tale:
var url = "../ajaxOFFresponse?key="+ escape(key.value);
Če dam breakpoint v naslednji, namreč do nje sploh ne pride (več).
Kaj je narobe? key.value? Bi moral definirat key.value posebej, ne pa da sem kar takole naredil:
var key = document.getElementById("textfield");
var url = "../ajaxOFFresponse?key="+ escape(key.value);
Če dam breakpoint v naslednji, namreč do nje sploh ne pride (več).
Kaj je narobe? key.value? Bi moral definirat key.value posebej, ne pa da sem kar takole naredil:
var key = document.getElementById("textfield");
[MYTiX] ::
To kar si ti napisal, bi vsekakor moralo delovat. A imaš še kak JS na isti strani?
podpis
Fizikalko ::
var busy = false;
function submitSearch(form)
{
//set the result catEntryType, which is checked on CatalogSearchResultDisplay.jsp:
// 1 = list items, packages, and bundles
// 2 = list products, packages, and bundles
if (!busy)
{
busy = true;
form.searchTerm.value = form.searchTerm.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
form.minPrice.value = form.minPrice.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
form.maxPrice.value = form.maxPrice.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
if ((form.minPrice.value == "") && (form.maxPrice.value == ""))
{
form.resultCatEntryType.value = "2";
form.currency.value="";
}
else
{
form.resultCatEntryType.value = "1";
}
form.submit();
}
}
function submitSearch(form)
{
//set the result catEntryType, which is checked on CatalogSearchResultDisplay.jsp:
// 1 = list items, packages, and bundles
// 2 = list products, packages, and bundles
if (!busy)
{
busy = true;
form.searchTerm.value = form.searchTerm.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
form.minPrice.value = form.minPrice.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
form.maxPrice.value = form.maxPrice.value.replace(/^\s+/g, '').replace(/\s+$/g, '');
if ((form.minPrice.value == "") && (form.maxPrice.value == ""))
{
form.resultCatEntryType.value = "2";
form.currency.value="";
}
else
{
form.resultCatEntryType.value = "1";
}
form.submit();
}
}
Fizikalko ::
Samo ne razumem, kaj ima druga skripta veze. Aplikacija mi itak dela, le ajax efekta ni (autocomplete-a).
Fizikalko ::
OK, po malo daljšem trejsanju sem ugotovil, da je problem vsaj tule, če ne še kje:
document.getElementById("textfield")
namre, to ne vrne ničesar, zato je "key" polje prazno. Kdo ve, zakaj? V IE se polje lepo napolni...
document.getElementById("textfield")
namre, to ne vrne ničesar, zato je "key" polje prazno. Kdo ve, zakaj? V IE se polje lepo napolni...
Fizikalko ::
Ja, itak.
No, polje je v glavnem "undefined". A mogoče v FF ta metoda (getElementByID) ne dela?
No, polje je v glavnem "undefined". A mogoče v FF ta metoda (getElementByID) ne dela?
Sergio ::
Dela dela.
Firebug say na Slo-Techu:
>>> document.getElementById("anketa_id_2098")
input id="anketa_id_2098" class="anketa" type="radio" value="2098" name="izbira"
Poglej ce se nisi v IDju elementa zatipkal. Poglej tudi velike-male crke. Stvar bi ziher morala delat.
Firebug say na Slo-Techu:
>>> document.getElementById("anketa_id_2098")
input id="anketa_id_2098" class="anketa" type="radio" value="2098" name="izbira"
Poglej ce se nisi v IDju elementa zatipkal. Poglej tudi velike-male crke. Stvar bi ziher morala delat.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
Fizikalko ::
MATER! Bemo! Jebenti! Pismo, no!!!
Pozabu sem en klinčev narekovaj v id atributu (html). IE to očitno tolerira, FF pa ne. AAARRGGGH!!!
Vseeno vsem najlepša hvala! Sej v bistvu breu vas niti najdu ne bi, ker sem bil zihr, da je ok, pa sem vseeno na nagovarjanje obeh še enkrat pogledal.
Aja, pri trejsanju sem opazil, da se včasih zgodi, da readystate vrne 1 namesto 4. Zakaj?
Pozabu sem en klinčev narekovaj v id atributu (html). IE to očitno tolerira, FF pa ne. AAARRGGGH!!!
Vseeno vsem najlepša hvala! Sej v bistvu breu vas niti najdu ne bi, ker sem bil zihr, da je ok, pa sem vseeno na nagovarjanje obeh še enkrat pogledal.
Aja, pri trejsanju sem opazil, da se včasih zgodi, da readystate vrne 1 namesto 4. Zakaj?
Zgodovina sprememb…
- spremenilo: Fizikalko ()
Sergio ::
Fizikalko: Firebug je tvoj prijatelj. Ce pride do napake, ti to zelo lepo pokaze s tistim rdecim klicajem. Lahko vkljucis tudi break on error, in bos mel trap okol napake.
Glede readystate pa ne vem tocno, v Javascriptu sem bolj nov.
Glede readystate pa ne vem tocno, v Javascriptu sem bolj nov.
Tako grem jaz, tako gre vsak, kdor čuti cilj v daljavi:
če usoda ustavi mu korak,
on se ji zoperstavi.
če usoda ustavi mu korak,
on se ji zoperstavi.
krho ::
0 Uninitialized - open() has not been called yet.
1 Loading - send() has not been called yet.
2 Loaded - send() has been called, headers and status are available.
3 Interactive - Downloading, responseText holds the partial data.
4 Completed - Finished with all operations.
1 Loading - send() has not been called yet.
2 Loaded - send() has been called, headers and status are available.
3 Interactive - Downloading, responseText holds the partial data.
4 Completed - Finished with all operations.
si.Mail odprto-kodni odjemalec elektronske pošte. - http://www.simail.si
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Uredite si svojo zbirko filmov, serij in iger - http://xcollect.sf.net
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | JqueryOddelek: Izdelava spletišč | 1769 (1493) | mk818764 |
» | [ajax] osnoveOddelek: Programiranje | 1051 (895) | Volk| |
» | [PHP/JavaScript] tic tac toeOddelek: Programiranje | 1643 (1376) | illion |
» | Javascript - izračun razlike v datumihOddelek: Programiranje | 1889 (1744) | kogledom |
» | tomcat - problem z encodingomOddelek: Programiranje | 2337 (2251) | kopernik |