jquery jsonp est d'utiliser script
標(biāo)簽中src
屬性來解決前后端數(shù)據(jù)請(qǐng)求遇到的跨域問題.有一點(diǎn)不明白的是jquery把動(dòng)態(tài)生成的script
標(biāo)簽追加到了head
標(biāo)簽中,也就是文檔的頭部;一般我們的回調(diào)函數(shù)在body
La fonction est d'abord déclarée puis utilisée. Pourquoi les données transmises en arrière-plan peuvent-elles être obtenues en l'appelant directement sans déclaration ?
Voici un test que j'ai fait :
//同源策略下有兩個(gè)文件:a.html和b.js.
//a.html中的內(nèi)容為:
//<script type="text/javascript" src="b.js"></script>
function test(val){
console.log(val)
}
//<script type="text/javascript" src="b.js"></script>
//b.js的內(nèi)容為:
test(10)
Si cette cha?ne de code est placée au-dessus de la fonction test
函數(shù)下面就會(huì)打印出數(shù)字10,如果放在test
déclarée, une erreur sera signalée
ReferenceError: test is not defined
Par rapport à l'implémentation de jquery, je ne comprends pas très bien pourquoi le js généré dynamiquement sera exécuté même s'il est appelé avant la fonction déclarée ?
業(yè)精于勤,荒于嬉;行成于思,毀于隨。
//同源策略下有兩個(gè)文件:a.html和b.js.
//a.html中的內(nèi)容為:
//<script type="text/javascript" src="b.js"></script>
function test(val){
console.log(val)
}
//<script type="text/javascript" src="b.js"></script>
//b.js的內(nèi)容為:
test(10)
S'il s'agit d'un src directement lié, le navigateur l'analyse de haut en bas et récupérera d'abord la valeur dans b.js. La fonction de a.js n'a pas encore été chargée dans la page et il n'y a pas de test ( ) cette fonction, donc une erreur sera signalée
Mais lors de l'envoi d'une requête ajax, vous attendez que la page soit complétée avant de la demander. Autrement dit, vous déclarez d'abord une fonction de rappel, puis créez un script à demander. Par conséquent, l'emplacement du script à ce moment n'affectera pas. le résultat final.
Parce que vous avez ignoré le problème asynchrone, en termes d'ordre d'exécution, lorsque la balise de script renvoyée par le serveur est chargée, votre fonction de rappel locale doit avoir été définie, vous pouvez donc appeler la méthode correspondante.
En termes simples?:
jsonp=Définir la fonction de rappel local=>Load script tag=>Exécuter le contenu de la balise de script chargée.
jsonp Pour parler franchement, c'est un accord :
'Nous sommes trop éloignés les uns des autres et nous ne pouvons pas nous joindre, comment peux-tu me donner tes affaires ?'
'Et si je te le lan?ais, peux-tu l'attraper ?'
'D'accord, j'ai un panier (callback), qui est à votre position 1 heure (callbackName), vous le lancez là'
Quant à savoir si le panier existe ou s'il est dans la bonne position, il le fait cela n'affecte pas votre accord
La position de chargement js introduite par jsonp est la position où l'instruction jsonp pour obtenir js est exécutée. Quant au placement, ce n'est qu'une formalité.