2010-05-20 3 views
0

Je suis venu sur un site Web qui semble utiliser Ajax, mais ne comprend pas de fichier js sauf un fichier appelé ajax.js qui a les éléments suivants:clarification d'un certain code

function run(c, f, b, a, d) { 
    var e = null; 
    if (b && f) { 
     document.getElementById(b).innerHTML = f 
    } 
    if (window.XMLHttpRequest) { 
     e = new XMLHttpRequest() 
    } else { 
     if (window.ActiveXObject) { 
      e = new ActiveXObject(Microsoft.XMLHTTP) 
     } 
    } 
    e.onreadystatechange = function() { 
     if (e.readyState == 4) { 
      if (e.status == 200 || e.statusText == "OK") { 
       if (b) { 
        document.getElementById(b).innerHTML = e.responseText 
       } 
       if (a) { 
        setTimeout(a, 0) 
       } 
      } else { 
       console.log("AJAX Error: " + e.status + " | " + e.statusText); 
       if (b && d != 1) { 
        document.getElementById(b).innerHTML = "AJAX Error. Please try refreshing." 
       } 
      } 
     } 
    }; 
    e.open("GET", c, true); 
    e.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    e.send(null) 
} 

Comme vous l'avez deviné , la façon dont il émet des requêtes dans la page avec des requêtes comme celle-ci:

run('page.php',loadingText,'ajax-test', 'LoadSamples()'); 

Je dois admettre que c'est la première fois que je l'ai vu une page à partir de laquelle je ne pouvais pas comprendre comment les choses sont faites. J'ai quelques questions:

  • Est-ce que cet Ajax côté serveur ou quelque chose de similaire? Si non, quelqu'un peut-il clarifier ce qu'est exactement cela?
  • Pourquoi l'utilise-t-on? Est-ce pour cacher les détails de la conception? (qui sont autrement révélées en texte brut par javascript)
  • Est-ce que ce serait difficile de convertir mon application existante dans ce modèle de conception ? (peut-être une question subjective mais toute suggestion courte fera l'affaire)

Une suggestion?

+0

De quel «modèle» parlez-vous exactement? Ceci est juste une seule fonction - pas assez pour baser un motif. –

+0

@Sean: En général, je vois des scripts comme jQuery inclus dans la section head. Cette page Web a seulement ajax.js inclus et utilise cet appel encore et encore. Suppression de la balise design-patterns également. – Legend

+0

Ce n'est certainement pas côté serveur. Le 'ajax.js' est également téléchargé sur le client et fonctionne également. L'effet est le même que l'intégration de l'ensemble du code dans une plaine '', il est seulement mieux maintenable et réutilisable. – BalusC

Répondre

1

Vous ne savez pas exactement ce que vous demandez ici, mais la fonction donnée est plutôt simple. Décodant les variables/paramètres:

  • e = objet de requête AJAX
  • c = Page à envoyer requête AJAX à
  • f = texte de chargement à afficher dans l'élément spécifié b
  • b = id de l'élément pour voir résultat sur
  • a = fonction à appeler, si la demande Ajax réussit
  • d = boolean - si oui, afficher une erreur en cas d'échec

Exactement pourquoi ils utilisent cette méthode particulière, je ne peux pas vraiment dire - voir la page complète qui utilise cette fonctionnalité peut aider.

Je ne pense pas qu'il cache des détails de conception.Cela me semble un peu bizarre de faire les choses, mais comme je l'ai dit plus haut, il peut y avoir des raisons spécifiques à cela dans la façon dont la page est utilisée dans les œuvres.

Pouvez-vous utiliser ce code? Certainement.

Devriez-vous utiliser ce code? La réponse à cela est: est-ce le bon outil pour le travail?

Est-il difficile de convertir votre code existant pour utiliser cette méthode? Cela dépend de votre code existant et si c'est le bon outil pour le travail.

1

Il s'agit simplement d'une fonction qui utilise l'objet XMLHttpRequest pour effectuer des requêtes asynchrones au format HTML afin de mettre à jour le document existant.

Ce n'est pas un modèle en soi, c'est juste une des nombreuses façons de mettre à jour dynamiquement le document.

Ce n'est pas 'Ajax côté serveur' (qu'est-ce que?), Son ajax tout simplement simple utilisé pour mettre à jour la page.
Pourquoi l'utiliser? Pour éviter d'avoir à actualiser la page entière quand seulement une petite section doit être mise à jour. Aucun développeur compétent n'utiliserait cela pour obscurcir. Si vous pouvez utiliser la même chose? Bien sûr ... si c'est ce dont vous avez besoin. Si tu devrais? Pourquoi pas - si c'est ce dont vous avez besoin.

0

Quel est le problème? Il me semble que c'est la fonction d'aide à la mise à jour ajax de quelqu'un à la maison. Beaucoup d'entre nous en ont écrit beaucoup à travers le temps.

+0

Vous avez raison. Je suppose juste un léger malentendu de ma part. – Legend

1

AJAX est juste un mot à la mode pour utiliser XMLHttpRequest pour charger le contenu Web de manière asynchrone à partir du serveur dans votre document Web. Cet appel de fonction est un appel XMLHttpRequest qui demande des données de page.php (de manière asynchrone sans recharger la page) et place tout le texte de réponse dans document.getElementById(b).innerHTML. Enfin, il semble appeler le rappel LoadSamples(), lorsque la réponse est reçue.