javascript - prinsip jquery jsonp: masalah kedudukan yang dijana secara dinamik tag js
迷茫
迷茫 2017-05-19 10:33:18
0
4
908
Prinsip

jquery jsonp adalah menggunakan script标签中src属性来解决前后端数据请求遇到的跨域问题.有一点不明白的是jquery把动态生成的script标签追加到了head标签中,也就是文档的头部;一般我们的回调函数在body Fungsi diisytiharkan dahulu dan kemudian digunakan Mengapakah data yang dihantar dari latar belakang boleh diperolehi dengan memanggilnya secara terus tanpa pengisytiharan?

Ini adalah ujian yang saya lakukan:

//同源策略下有两个文件: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)

Jika rentetan kod ini diletakkan di atas fungsi test函数下面就会打印出数字10,如果放在test yang diisytiharkan, ralat akan dilaporkan

ReferenceError: test is not defined

Berbanding dengan pelaksanaan jquery, saya tidak begitu faham mengapa js yang dijana secara dinamik akan dilaksanakan walaupun ia dipanggil sebelum fungsi yang diisytiharkan?

迷茫
迷茫

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

membalas semua(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)

Jika ia adalah src yang dipautkan secara langsung, penyemak imbas menghuraikannya dari atas ke bawah, dan akan mendapatkan semula nilai dalam b.js dahulu Fungsi a.js belum dimuatkan ke dalam halaman, dan tiada ujian(. ) fungsi ini, jadi ralat akan dilaporkan

Tetapi apabila menghantar permintaan ajax, anda menunggu halaman selesai sebelum memintanya, anda mula-mula mengisytiharkan fungsi panggil balik dan kemudian membuat skrip untuk meminta, oleh itu, lokasi skrip pada masa ini tidak akan menjejaskan keputusan akhir.

世界只因有你

Oleh kerana anda mengabaikan masalah tak segerak, dari segi susunan pelaksanaan, apabila teg skrip yang dihantar semula dari pelayan dimuatkan, fungsi panggil balik tempatan anda mesti ditakrifkan, jadi anda boleh memanggil kaedah yang sepadan.
Ringkasnya:
jsonp=Tentukan fungsi panggil balik setempat=>Muat teg skrip=>Jalankan kandungan teg skrip yang dimuatkan.

Peter_Zhu

jsonp Secara terang-terangan, ia adalah satu perjanjian:
'Kami terlalu jauh dan tidak dapat menghubungi satu sama lain, bagaimana anda boleh memberikan barang anda kepada saya?'
'Bagaimana kalau saya membuangnya kepada anda, bolehkah anda menangkapnya ?'
'Baiklah, saya ada bakul (panggilan balik), iaitu pada kedudukan pukul 1 anda (Nama panggilan balik), anda baling ke sana sama ada bakul itu wujud atau tidak, dan sama ada ia berada di kedudukan yang betul. ia tidak menjejaskan perjanjian anda.

曾经蜡笔没有小新

Lokasi pemuatan js yang diperkenalkan oleh jsonp ialah lokasi di mana pernyataan jsonp untuk mendapatkan js dilaksanakan. Mengenai penempatan, ia hanya formaliti.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan