Si JSONP est juste un script dynamique, quand la requête est-elle faite?

Apparemment, les requêtes JSONP utilisant jQuery.ajax ne sont pas vraiment asynchrones, mais utilisent simplement l'approche Script DOM Element, en ajoutant une balise script sur la page. J'ai découvert cela à partir d'ici: https://groups.google .com/forum/#! topic/jquery-dev/5-tKI-7zQvs , qui dit:

Le JSONP interdomaine n'est pas du tout AJAX. Il n'utilise pas XMLHttpRequest.   Ce n'est rien de plus qu'un élément de script dynamique qui charge JavaScript   code.

Cet élément de script dynamique est ensuite traité après le chargement de la page (et dans le cas de JSONP, cela signifie simplement que la fonction de rappel est exécutée avec un paramètre des données JSON provenant de l'URL spécifiée dans l'appel .ajax).

Donc, si j'avais le code suivant dans une page Web HTML:

<script>
    jQuery(document).ready(function() {
        jQuery.ajax({dataType:'jsonp', data:'FIRST'...});
    });
</script>
<script>
    jQuery(document).ready(function() {
        jQuery.ajax({dataType:'jsonp', data:'SECOND'...});
    });
</script>

quel serait l'ordre des choses?

Serait-ce soit:

(1) tag de script pour faire une demande FIRST ajoutée à DOM

(2) tag de script pour faire la deuxième demande ajoutée à DOM

(3) PREMIÈRE demande faite

(4) DEUXIÈME demande faite

ou:

(1) tag de script pour faire une demande FIRST ajoutée à DOM

(2) PREMIÈRE demande faite

(3) tag de script pour faire une deuxième requête ajoutée à DOM

(4) DEUXIÈME demande faite

ou peut-être aucun de ce qui précède et je suis malentendu?

Je vous remercie.

0
ajouté édité
Vues: 1

1 Réponses

Apparemment, les requêtes JSONP utilisant jQuery.ajax ne sont pas vraiment asynchrones

C'est faux, ils le sont.

il utilise plutôt l'approche Script DOM Element, en ajoutant une balise de script à la page.

C'est vrai.

Le JSONP interdomaine n'est pas du tout AJAX. Il n'utilise pas XMLHttpRequest.

XMLHttpRequest n'est pas une condition préalable pour Ajax. (Et xml n'est pas un pré-requis pour Ajax ou XMLHttpRequest (qui n'a obtenu que du xml dans son nom parce que xml était cool à ce moment-là et les développeurs devaient convaincre les gestionnaires de l'ajouter au produit))

quel serait l'ordre des choses?

  1. Le premier script serait exécuté (création d'un gestionnaire d'événement ready)
  2. Le deuxième script serait exécuté (en créant un deuxième gestionnaire d'événement prêt)
  3. L'événement prêt se déclenchera
  4. Le premier élément de script dynamique serait ajouté à la page
  5. Le deuxième élément de script dynamique serait ajouté à la page
  6. Le premier élément de script dynamique devrait s'exécuter
  7. Le deuxième élément de script dynamique devrait s'exécuter
5
ajouté
Je vous remercie. Très appréciée.
ajouté l'auteur user265330, source
Notez cependant que 6 et 7 peuvent se produire en inverse en fonction de la durée de chaque requête.
ajouté l'auteur Kevin B, source
@Quentin Nous observons que la mémoire du navigateur ne cesse d'augmenter à chaque fois qu'une nouvelle balise "<script .....>" est ajoutée, les navigateurs téléchargent la même chose qu'un "Fichier" qu'il semble mettre en cache - Désactiver le cache peut ne pas aider car nous sommes avoir à faire des appels récursifs sans rafraîchir/recharger la page lorsque l'onglet est ouvert - Nous observons la mémoire gonfler jusqu'à 800 Mo avant le plantage. - Toute aide pour contourner cela?
ajouté l'auteur takrishna, source