url 上回調函數(JSONP原理)


1、JSONP原理:就是跨域的 js程序(get請求對應url,獲取到文本數據,在script標簽中,就是按照 js 程序執行,)執行時  調用  當前程序中寫好的函數,並且把跨域的數據(即參數),傳遞過去。https://blog.csdn.net/inite/article/details/80333130

2、這里兩個js文件的 調用的函數名  和  寫好的函數名必須是一樣的。如果兩個j s 文件的對應函數名都要 同時 修改,這樣很不靈活,比較死板。跨域的js文件,通過后端程序,把調用的函數名,變成url上的參數,這樣主要前端自定義函數名就可以了。

  如:php 語言,獲取到url上的回調函數參數,把這個參數值作為  調用的函數名,寫到返回的js程序中。

<?php
$data = array(
    'age' => 24,
    'name' => '小華',
    'sex' => '女'
);

$callback = $_GET['callback'];  // url 上設置的回調函數,作為調用的函數名。
 
echo $callback."(".json_encode($data).")";  // 如url上 callback=mapload,則php返回的數據就是   mapload({age:24,name:'小華',sex:'女'}) ,正是 js 的函數調用

 

 

重點:

基於JSOP的原理除了可以 解決 跨域請求數據的問題。也可以實現 js 文件執行后,再執行的功能,即異步回調的功能。高德地圖的 異步加載 js 文件,就是這么實現的。https://lbs.amap.com/api/javascript-api/guide/abc/load

window.onLoad  = function(){
    var map = new AMap.Map('container');
}
var url = 'https://webapi.amap.com/maps?v=1.4.15&key=您申請的key值&callback=onLoad';
var jsapi = document.createElement('script');
jsapi.charset = 'utf-8';
jsapi.src = url;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM