login  Naam:   Wachtwoord: 
Registreer je!
 Forum
Zoeken  Regels  Help
Categorieën > JavaScript

return var in functie

skillat2 – 18/06/2010 16:11
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

Richard – 18/06/2010 19:53 (Laatst gewijzigd op 18/06/2010 19:54)
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-2012 Sitemasters.be - Regels - Gehost door: Vircon - Laadtijd: 0.038s