|
| Køre 2 javascripts via AJAX på en gang fej~ Fra : Ukendt |
Dato : 22-01-08 10:19 |
|
Hej Alle
Jeg har et problem :(
Jeg har en button jeg aktivere 2 javascripts med, som så begge kører hver
sin php side backend.
Det virker ikke, den kører kun det sidste script ordenligt, jeg aktivere dem
således:
<input type=\"button\" value=\"Slet hold\" name=\"b7\"
onClick=\"doRemSmallTeam('".$akidtillink."','updatearea".$x1."y');doSearchbox1('".$x1."',
'updatearea".$x1."a'); \" class=\"btn2\"></div><br>";
Og der kører den kun det script der er skrevet sidst, men jeg kan godt kører
2 scripts her, men der er det også kun det ene der aktivere en php side
backend, det andet er ren javascript.
echo "<input type=\"checkbox\" onClick=\"doSearchbox1('".rtrim($x1)."',
'updatearea".rtrim($x1)."a');doShowBut(this);\" name=\"".$x1."\"
id=\"".$x1."\" value=\"".$x1."\"> ".$types[$x1]."<br>";
Er det fordi der ikke er pause imellem de 2 scripts?, og hvis ja, hvordan
fixer jeg så den?
Har også prøvet at lave et enkelt script, der så bare kalder de 2, men det
er samme resultat :(
function doDualfunc(a, b, c, d){
doSearchbox1(c, d);
doRemSmallTeam(a, b);
}
Er der nogle der kan gennemskue fejlen?
Mvh
Morten
| |
Christian R. Larsen (22-01-2008)
| Kommentar Fra : Christian R. Larsen |
Dato : 22-01-08 10:25 |
|
"Mr J.." <xSnAbElAstarchild.dk> wrote in message
news:4795b503$0$90267$14726298@news.sunsite.dk...
> Det virker ikke, den kører kun det sidste script ordenligt, jeg aktivere
> dem således:
Kan du ikke være lidt mere præcis med, hvad "ordentligt" betyder?
Endvidere vil jeg tro, at løsningen ligger i de to funktioners udformning,
så måske skal vi se koden for dem også?
| |
Ukendt (22-01-2008)
| Kommentar Fra : Ukendt |
Dato : 22-01-08 10:32 |
|
>> Det virker ikke, den kører kun det sidste script ordenligt, jeg aktivere
>> dem således:
>
> Kan du ikke være lidt mere præcis med, hvad "ordentligt" betyder?
Den kører noget af scriptet, men når ikke at tage fat i php siden backend,
sådan ser det ihvertfald ud, der kommer intet til skærmen, men man kan godt
få alerts fra javascript delen, der kommer bare ikke noget fra php scriptet
backend.
> Endvidere vil jeg tro, at løsningen ligger i de to funktioners udformning,
> så måske skal vi se koden for dem også?
De to virker 100% hvert for sig, så tror det har noget at gøre med at den
ikke når at kører det første færdigt..
Mvh
Morten
| |
Christian R. Larsen (22-01-2008)
| Kommentar Fra : Christian R. Larsen |
Dato : 22-01-08 10:46 |
|
"Mr J.." <xSnAbElAstarchild.dk> wrote in message
news:4795b816$0$90272$14726298@news.sunsite.dk...
>>> Det virker ikke, den kører kun det sidste script ordenligt, jeg aktivere
>>> dem således:
>>
>> Kan du ikke være lidt mere præcis med, hvad "ordentligt" betyder?
>
> Den kører noget af scriptet, men når ikke at tage fat i php siden backend,
> sådan ser det ihvertfald ud, der kommer intet til skærmen, men man kan
> godt få alerts fra javascript delen, der kommer bare ikke noget fra php
> scriptet backend.
Hvad sker der, hvis du kører den funktion alene?
Har du prøvet at outputte det tekst-resultat, din fuktion får tilbage fra
PHP-siden? Dvs.: Er du 110% sikker på, at den ikke får noget med tilbage?
>
>> Endvidere vil jeg tro, at løsningen ligger i de to funktioners
>> udformning, så måske skal vi se koden for dem også?
>
> De to virker 100% hvert for sig,
Ja, men det er nu engang ikke en garanti for, at de også virker sammen.
| |
Ukendt (22-01-2008)
| Kommentar Fra : Ukendt |
Dato : 22-01-08 10:59 |
|
> Hvad sker der, hvis du kører den funktion alene?
Som skrevet før, så kører de 2 funktioner 100% hver for sig..
> Har du prøvet at outputte det tekst-resultat, din fuktion får tilbage fra
> PHP-siden? Dvs.: Er du 110% sikker på, at den ikke får noget med tilbage?
De er her, og det er KUN det der er listet sidst der kommer med output, så
man kan bare skrive det andet bagerst, så der det det der bliver kørt, men
den skulle jo gerne køre begge:
function doSearchbox1(numbers, areas){
var url = "backend5.php?nr=" + numbers;
url += "&time=" + Math.random();
displayArea = null;
http.open("GET", url, true);
displayArea = document.getElementById(areas);
http.onreadystatechange = handleHttpResponse5;
http.send(null);
}
function handleHttpResponse5(){
if ((http.readyState == 4) && (http.status == 200)){
displayArea.innerHTML = http.responseText;
}
}
function doRemSmallTeam(akid, areas){
var url = "backenddelteam.php?holdid=" + akid;
url += "&time=" + Math.random();
displayArea = null;
http.open("GET", url, true);
displayArea = document.getElementById(areas);
http.onreadystatechange = handleHttpResponse9;
http.send(null);
}
function handleHttpResponse9(){
if ((http.readyState == 4) && (http.status == 200)){
displayArea.innerHTML = http.responseText;
}
}
>>> Endvidere vil jeg tro, at løsningen ligger i de to funktioners
>>> udformning, så måske skal vi se koden for dem også?
>>
>> De to virker 100% hvert for sig,
>
> Ja, men det er nu engang ikke en garanti for, at de også virker sammen.
De er så postet nu :)
Mvh
Morten
| |
Christian R. Larsen (22-01-2008)
| Kommentar Fra : Christian R. Larsen |
Dato : 22-01-08 11:03 |
|
"Mr J.." <xSnAbElAstarchild.dk> wrote in message
news:4795be54$0$90271$14726298@news.sunsite.dk...
>> Har du prøvet at outputte det tekst-resultat, din fuktion får tilbage fra
>> PHP-siden? Dvs.: Er du 110% sikker på, at den ikke får noget med tilbage?
Men er du sikker på det?
| |
Ukendt (22-01-2008)
| Kommentar Fra : Ukendt |
Dato : 22-01-08 11:11 |
|
>>> Har du prøvet at outputte det tekst-resultat, din fuktion får tilbage
>>> fra PHP-siden? Dvs.: Er du 110% sikker på, at den ikke får noget med
>>> tilbage?
>
> Men er du sikker på det?
Som du kan se, så laver javascriptet udskrift til siden for begge scripts..
Og jeg kan intet se for det ene script, kun det script der kører sidst laver
noget på skærmen :)
Mvh
Morten
| |
Birger (22-01-2008)
| Kommentar Fra : Birger |
Dato : 22-01-08 14:47 |
|
"Mr J.." <xSnAbElAstarchild.dk> skrev i en meddelelse
news:4795c150$0$90264$14726298@news.sunsite.dk...
>>>> Har du prøvet at outputte det tekst-resultat, din fuktion får tilbage
>>>> fra PHP-siden? Dvs.: Er du 110% sikker på, at den ikke får noget med
>>>> tilbage?
>>
>> Men er du sikker på det?
>
> Som du kan se, så laver javascriptet udskrift til siden for begge
> scripts..
>
> Og jeg kan intet se for det ene script, kun det script der kører sidst
> laver noget på skærmen :)
>
> Mvh
> Morten
>
Jeg har ikke nærlæst, men jeg er næsten sikker på, at dit problem er at du
bruger samme AJAX-object (XMLHTTPRequest) til begge dine forespørgsler
(php), og du gør det asynkront.
Det betyder, at der ikke ventes på et resultat af den første, men den anden
sendes afsted, før det er kommet - effektivt bliver det ikke brugt til
noget, fordi handlet (callback-funktionen) bliver overskrevet i objectet.
Prøv at gøre AJAX requesten synkron i stedet ( 3.parameter i open skal være
false).
Alternativt, skal du oprette et nyt object til hver request.
Birger
-----
http://bbsorensen.dk
| |
Ukendt (22-01-2008)
| Kommentar Fra : Ukendt |
Dato : 22-01-08 14:55 |
|
> Jeg har ikke nærlæst, men jeg er næsten sikker på, at dit problem er at du
> bruger samme AJAX-object (XMLHTTPRequest) til begge dine forespørgsler
> (php), og du gør det asynkront.
> Det betyder, at der ikke ventes på et resultat af den første, men den
> anden sendes afsted, før det er kommet - effektivt bliver det ikke brugt
> til noget, fordi handlet (callback-funktionen) bliver overskrevet i
> objectet.
> Prøv at gøre AJAX requesten synkron i stedet ( 3.parameter i open skal
> være false).
> Alternativt, skal du oprette et nyt object til hver request.
Hej Birger, du har ret som altid, fandt selv fejlen, har bare ikke nået at
skrive det endnu..
Jeg har oprettet nyt objekt til hvert script.. men vil da lige prøve det
andet du foreslår :)
Mvh
Morten
| |
Birger (22-01-2008)
| Kommentar Fra : Birger |
Dato : 22-01-08 20:42 |
|
"Mr J.." <xSnAbElAstarchild.dk> skrev i en meddelelse
news:4795f5c0$0$90270$14726298@news.sunsite.dk...
>> Jeg har ikke nærlæst, men jeg er næsten sikker på, at dit problem er at
>> du bruger samme AJAX-object (XMLHTTPRequest) til begge dine forespørgsler
>> (php), og du gør det asynkront.
>> Det betyder, at der ikke ventes på et resultat af den første, men den
>> anden sendes afsted, før det er kommet - effektivt bliver det ikke brugt
>> til noget, fordi handlet (callback-funktionen) bliver overskrevet i
>> objectet.
>> Prøv at gøre AJAX requesten synkron i stedet ( 3.parameter i open skal
>> være false).
>> Alternativt, skal du oprette et nyt object til hver request.
>
> Hej Birger, du har ret som altid, fandt selv fejlen, har bare ikke nået at
> skrive det endnu..
> Jeg har oprettet nyt objekt til hvert script.. men vil da lige prøve det
> andet du foreslår :)
>
> Mvh
> Morten
>
;>)
Forskellen på at gøre det asynkront og synkront, er:
Ved synkron venter scriptet til dit kald er færdigt - det andet kald bliver
derfor ikke udført, før det første er færdigt. (Og derfor kan samme object
bruges til begge kald).
Ved asynkron forsætter scriptet, og det andet kald vil påvirke det første,
når du ikke opretter nyt object.
Ulempen ved de synkrone kald er selvfølgelig, at hele browseren bliver
blokeret mens kaldene er i gang.
Man skal overveje om brugeren faktisk har (skal have) mulighed for at
foretage sig noget andet, mens der ventes - og om de to kald evt. skal komme
i en given rækkefølge på serversiden (php), og måske også kan drille
hinanden der...
Birger
-----
http://bbsorensen.dk
| |
Stig Johansen (23-01-2008)
| Kommentar Fra : Stig Johansen |
Dato : 23-01-08 22:19 |
|
"Mr J.." <xSnAbElAstarchild.dk> wrote:
> Hej Birger, du har ret som altid, fandt selv fejlen, har bare ikke nået at
> skrive det endnu..
> Jeg har oprettet nyt objekt til hvert script.. men vil da lige prøve det
> andet du foreslår :)
Lige et supplement, du skrev:
if ((http.readyState == 4) && (http.status == 200)){ <--- HER ER LINIE 323
Nu ved jeg ikke om det kun var min browser, men pga. returneret serverfejl,
404,500 jeg kan ikke huske det, så var
http.readyState == 4
MEN
http.status = nonexistent object.
Det kan også være det var URI'en der var forkert.
Din fejlmeddelse kunne tyde på, det var sådan noget du var ude i.
--
Med venlig hilsen
Stig Johansen
| |
Birger (24-01-2008)
| Kommentar Fra : Birger |
Dato : 24-01-08 00:33 |
|
"Stig Johansen" <stig_johansen_it_at_=(@)hotmail.com> skrev i en meddelelse
news:4797af41$0$90275$14726298@news.sunsite.dk...
> "Mr J.." <xSnAbElAstarchild.dk> wrote:
>
>> Hej Birger, du har ret som altid, fandt selv fejlen, har bare ikke nået
>> at
>> skrive det endnu..
>> Jeg har oprettet nyt objekt til hvert script.. men vil da lige prøve det
>> andet du foreslår :)
>
> Lige et supplement, du skrev:
> if ((http.readyState == 4) && (http.status == 200)){ <--- HER ER LINIE 323
>
> Nu ved jeg ikke om det kun var min browser, men pga. returneret
> serverfejl,
> 404,500 jeg kan ikke huske det, så var
> http.readyState == 4
> MEN
> http.status = nonexistent object.
> Det kan også være det var URI'en der var forkert.
> Din fejlmeddelse kunne tyde på, det var sådan noget du var ude i.
>
> --
> Med venlig hilsen
> Stig Johansen
Jeg tror, at også de genererede fejl, har at gøre med at det samme object
forsøges anvendt til begge kald.
Jeg mener, at status slet ikke er tilgængelig, før readyState == 4
(kommunikation færdig), og det kunne godt være det, fejlen går på.
Birger
-----
http://bbsorensen.dk
| |
Stig Johansen (24-01-2008)
| Kommentar Fra : Stig Johansen |
Dato : 24-01-08 02:29 |
|
Birger wrote:
> Jeg tror, at også de genererede fejl, har at gøre med at det samme object
> forsøges anvendt til begge kald.
> Jeg mener, at status slet ikke er tilgængelig, før readyState == 4
> (kommunikation færdig), og det kunne godt være det, fejlen går på.
Det var min gamle Konqueror, der gav fejlen.
Jeg tror faktisk, det noget af dit jeg prøvede, det husker jeg ikke lige.
Der _er_ fejl i min Konq, derfor har jeg ikke undersøgt det videre.
status var ikke tilgængelig, _men_ readyState var == 4
Det var noget jeg sad og fumlede med, så det kan også have været en ulovlig
URI (klippe klistre for meget).
Jeg har ikke afprøvet det siden, det var bare et hint om, at det er sket
(for mig).
--
Med venlig hilsen
Stig Johansen
| |
Stig Johansen (24-01-2008)
| Kommentar Fra : Stig Johansen |
Dato : 24-01-08 02:31 |
|
Stig Johansen wrote:
> Det var min gamle Konqueror, der gav fejlen.
Hov, glemte lige - det var _ikke_ en fejl, men en _exception_ (null)
--
Med venlig hilsen
Stig Johansen
| |
Ukendt (22-01-2008)
| Kommentar Fra : Ukendt |
Dato : 22-01-08 13:43 |
|
I Firefox bliver ingen af dem kørt og jeg får denne fejl:
uncaught exception: [Exception... "Component returned failure code:
0xc1f30001 (NS_ERROR_NOT_INITIALIZED) [nsIXMLHttpRequest.send]" nsresult:
"0xc1f30001 (NS_ERROR_NOT_INITIALIZED)" location: "JS frame :: javascript:
eval(__firebugTemp__); :: anonymous :: line 1" data: no]
undefined
[Exception... "Component returned failure code: 0x80040111
(NS_ERROR_NOT_AVAILABLE) [nsIXMLHttpRequest.status]" nsresult: "0x80040111
(NS_ERROR_NOT_AVAILABLE)" location: "JS frame ::
http://pweb01.herluf.intra/staff/esasystem/elevdel/ajax.js ::
handleHttpResponse9 :: line 323" data: no]
linie 323 er med i dette:
function doRemSmallTeam(akid, areas){
var url = "backenddelteam.php?holdid=" + akid;
url += "&time=" + Math.random();
displayArea1 = null;
http.open("GET", url, true);
displayArea1 = document.getElementById(areas);
http.onreadystatechange = handleHttpResponse9;
http.send(null);
}
function handleHttpResponse9(){
if ((http.readyState == 4) && (http.status == 200)){ <--- HER ER LINIE
323
displayArea1.innerHTML = http.responseText;
}
}
Jeg synes at det er sort..
| |
|
|