javascript - Principe jquery jsonp : problème de position généré dynamiquement par la balise js
迷茫
迷茫 2017-05-19 10:33:18
0
4
885
Le principe de

jquery jsonp est d'utiliser script标签中src属性来解决前后端数据请求遇到的跨域问题.有一点不明白的是jquery把动态生成的script标签追加到了head标签中,也就是文档的头部;一般我们的回调函数在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 :

//同源策略下有两个文件:a.html和b.js.
//a.html中的内容为:


//<script type="text/javascript" src="b.js"></script>

function test(val){
    console.log(val)
}

//<script type="text/javascript" src="b.js"></script>


//b.js的内容为:
test(10)

Si cette chaîne de code est placée au-dessus de la fonction test函数下面就会打印出数字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 ?

迷茫
迷茫

业精于勤,荒于嬉;行成于思,毁于随。

répondre à tous(4)
左手右手慢动作
//同源策略下有两个文件:a.html和b.js.
//a.html中的内容为:


//<script type="text/javascript" src="b.js"></script>

function test(val){
    console.log(val)
}

//<script type="text/javascript" src="b.js"></script>


//b.js的内容为:
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.

Peter_Zhu

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é.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal