webForumDet fria alternativet

Icke-asynkront anrop

5 svar · 676 visningar · startad av Peeer

PeeerMedlem sedan mars 20025 362 inlägg
#1

Hej!
Jag använder mig av ett kodbibliotek (Ext JS) som gör ett asynkront anrop till en webbserver. Det fungerar jättebra, men nu vill jag göra ett synkront anrop (dvs beroende på vad jag får för svar från servern så vill jag göra olika saker), vilket Ext inte tycks stödja.

Jag har googlat och försökt göra en hel del olika fullösningar (såsom en loop som snurrar tills en variabel har ett visst värde (vilket den får när ajaxanropet är klart)). Problemet är bara att jag inte lyckas få det att fungera. Loopen tar 100% cpu-belastning och ajaxanropet verkar inte få köra förrens loopen stängs av.

Så min fråga är helt enkelt:
Hur POSTar man några variabler till en server synkront?

/r Just ja. Jag upptäckte att om jag gör mitt ajax-anrop och därefter slänger upp en alert-ruta så körs ajax-anropet klart, men inget efter alert-rutan får köras förrens jag manuellt trycker bort den. Så det går ju att pausa exekveringen av javascriptet på sidan, men hur gör man det utan att användaren måste ingripa?

colioneMedlem sedan juni 20013 386 inlägg
#2

Vad är det som du är ute efter som gör att du inte kan göra anropet asynkront? Det kanske finns en bättre lösning?

Om du dock prompt måste ha det synkront, finns det modifieringar av core samt plugins att tillgå:
http://extjs.net/forum/showthread.php?t=10857
http://extjs.com/forum/showthread.php?t=21681

PeeerMedlem sedan mars 20025 362 inlägg
#3

Jag håller på med ett träd (liknade utforskaren). När en nod flyttas från ett ställe till ett annat vill jag kolla att den flytten verkligen är godkänd. Jag kan avbryta flytten genom att returnera false i eventet "beforemovenode", men eftersom servern inte hinner svara innan javascriptet lämnar eventet så flyttas noden.

Hittade det där pluginet innan, men fick det inte att fungera (layouten renderades inte som den skulle), men ska kolla på den där modifikationen.

PeeerMedlem sedan mars 20025 362 inlägg
#4

Hmm, lyckas inte lösa det där. När jag implementerar patchen så får jag samma resultat som om jag installerar pluginet. Dvs allt vad ajax-anrop slutar fungera. Sitter med version 2.2.1 av ext om det nu skulle hjälpa.. :(

colioneMedlem sedan juni 20013 386 inlägg
#5

Hmm, jag tror lösningen i detta fallet är att göra en return false på onbeforemovenode, sätta en mask på trät (typ "Vänta...") och sedan flytta noden programmatiskt i success om svaret från servern är true. Kanske visa en Ext.MessageBox.alert eller liknande som berättar hur flytten gick.

Ett annat alternativ är ju att ladda in tillåtna flyttningar i en array och kolla via den.

Det var ett tag sen jag jobbade med Ext, men jag tror dock att övre förslaget är bästa sättet i detta fallet.

Exempel på flytt programmatiskt:
https://www.yui-ext.com/forum/showthread.php?t=46537

PeeerMedlem sedan mars 20025 362 inlägg
#6

Ja det får väl bli så. Hoppas de har löst den där buggen de nämner i tråden bara. :)

Tack för hjälpen.

Genererad på 383 ms · cache AV · v20260730165559-full.f96bc7eb