[PHP/AJAX]Ajax wacht met uitvoeren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Ik wil met ajax mijn eigen upload handler maken, maar ik stuitte op een raar en vervelend probleem.

Ik heb een simpel formpje:
code:
1
2
3
4
5
6
7
8
<form action="test.php" method="post" enctype="multipart/form-data" name="upload_form" target="uploadframe" onsubmit="xajax_upload_progress();return true;">
<input type="hidden" name="task" value="upload">
<input type="file" name="videofile"><br />
<input type="submit" name="submit" value="submit">
</form>
<br>
<span id="upload_progress">TEST</span><br>
<iframe id="uploadframe" name="uploadframe">


Het staat hier niet maar de ajax file wordt ingeladen en ajax aangeroepen, dat werkt prima.

Ik submit hiermee dus test.php naar een iframe, direct wordt xajax_upload_progress() aangeroepen.

Test.php bestaat alleen maar hieruit:
code:
1
2
sleep(2);
echo"Klaar!";


De ajax functie:
code:
1
2
3
4
5
6
7
8
9
10
11
$xajax = new xajax();
$xajax->registerFunction("upload_progress");

function upload_progress()
{
    $objResponse = new xajaxResponse();
    $objResponse->addAssign('upload_progress','innerHTML', rand(0,1000));
    $objResponse->addScript("xajax_upload_progress();");
    return $objResponse;
}
$xajax->processRequests();


Werkt goed, ik klik en de functie wordt aangeroepen, want de SPAN upload_test veranderd, MAAR deze veranderd maar 1 malig. Pas als de 2 seconde voorbij zijn en mijn iFrame geeft de output, dan gaat het ajax script verder.

Maar dat is niet de bedoeling, ik wil dus terwijl het script loopt met ajax gaan pollen, maar wel tegelijk.

Zit er een foutje of houd ik ergens geen rekening mee?

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Wat wil je pollen? Of de file al geupload is?
PHP houd geen status bij van hoever ie is zover ik weet.
Je zult gebruik moeten maken van perl om dit voor elkaar te krijgen denk ik. Er is wel zo'n script al beschikbaar die dit kan, moet je ff checken op google...weet t ff niet uit mn hoofd.

Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Je gebruikt zeker een sessie? Heb je session.auto_start aan?
Die blijft gelocked tijdens de uitvoer van je script.

Bovenin even session_write_close() aanroepen zodat je andere thread verder kan.

[ Voor 8% gewijzigd door frickY op 11-01-2007 14:05 ]


Acties:
  • 0 Henk 'm!

  • Megamind
  • Registratie: Augustus 2002
  • Laatst online: 10-09 22:45
Aha, daarmee kan ik wel even spelen, ik wil alleen pollen of hij al klaar is op de achtergrond met PHP enz. Met de gepatchde PHP versie kan je ook progressie opvragen.

Met PHP 5.2 is het ook mogelijk nu :)

[ Voor 10% gewijzigd door Megamind op 11-01-2007 15:18 ]


Acties:
  • 0 Henk 'm!

  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 14-09 19:35

Setragasj

is using radars to communicate

Wat je misschien ook kan doen is een functie aanroepen ( die in de parent staat ) vanuit de iframe door aan het einde van je php script <script>parent.myHandler();</script> neer te pleuren.
Niet erg ajax, maar zou ook een oplossing kunnen zijn.

<Typ een persoonlijk bericht>