login  Naam:   Wachtwoord: 
Registreer je!
 Forum

return var in functie

Offline skillat2 - 18/06/2010 16:11
Avatar van skillat2HTML beginner Ik probeer dmv. een functie een variable te returnen in een AJAX request.
Dit lukt echter niet, iemand een idee?

  1. function get_image(url)
  2. {
  3. var xmlhttp2;
  4. xmlhttp2=GetXmlHttpObject()
  5. xmlhttp2.onreadystatechange=function()
  6. {
  7. if (xmlhttp2.readyState == 4)
  8. {
  9. return 2;
  10. }
  11. };
  12. xmlhttp2.open("GET", 'image_print.php?url=' + url, true);
  13. xmlhttp2.send(null);
  14.  
  15. //return output;
  16.  
  17. }


Je zou zeggen dat er 2 uit zou moeten komen.. maar er komt undefined uit.
De readystate is wel 4 (completed), getest met een alert..

1 antwoord

Gesponsorde links
Offline Richard - 18/06/2010 19:53 (laatste wijziging 18/06/2010 19:54)
Avatar van Richard Crew algemeen Kan ook niet, het is asynchroon dus je onreadystatechange wordt later aangeroepen. Tegen die tijd is de functie allang klaar.

XMLHttp is makkelijk op te lossen als je het goed doet:

  1. /*global P */
  2.  
  3. /*members ajax, handlers, json, onreadystatechange, open, parse,
  4.   protocol, readyState, request, responseText, send, setRequestHeader,
  5.   text
  6. */
  7.  
  8. P.ajax = (function (global) {
  9. var xhr, handlers = {
  10. text: function (txt) {
  11. return txt;
  12. },
  13. json: function (txt) {
  14. return JSON.parse(txt);
  15. }
  16. };
  17.  
  18. if (typeof XMLHttpRequest !== 'undefined' && (location.protocol !== 'file:' || typeof ActiveXObject === 'undefined')) {
  19. xhr = function () {
  20. return new XMLHttpRequest();
  21. };
  22. } else {
  23. xhr = function () {
  24. try {
  25. return new ActiveXObject('Microsoft.XMLHTTP');
  26. } catch (e) {}
  27. };
  28. }
  29.  
  30. return {
  31. request: function (url, func, type, method) {
  32. var r = xhr(), stateChange;
  33.  
  34. if (!r) {
  35. return;
  36. }
  37.  
  38. if (!type) {
  39. type = 'json';
  40. }
  41.  
  42. if (!method) {
  43. method = 'GET';
  44. }
  45.  
  46. r.open(method, url);
  47.  
  48. r.setRequestHeader('X-Requested-With', 'XMLHttpRequest');
  49.  
  50. r.onreadystatechange = stateChange = function () {
  51. if (r.readyState === 4) {
  52. func(handlers[type](r.responseText));
  53. r = null;
  54. }
  55. };
  56.  
  57. r.send(null);
  58. },
  59. handlers: handlers
  60. };
  61. }(this));


En vervolgens:
  1. P.ajax.request('image_print.php?url=' + url, function (response) {
  2. if (response === 2) {
  3. // doe iets, het is goed!
  4. }
  5. }); // JSON, GET
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.18s