国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

使用script的src實(shí)現(xiàn)跨域和類似ajax效果

Batkid / 671人閱讀

摘要:的接口代碼一般如果是的站內(nèi)請(qǐng)求就直接返回了,但如果要用屬性實(shí)現(xiàn)跨域,這里我們需要將該值賦給一個(gè)變量,保證在標(biāo)簽加載后的頁(yè)面里能獲取到這個(gè)數(shù)據(jù)并使用。

場(chǎng)景

在解決js的跨域問題的時(shí)候, 有多種方式, 其中有一種是利用script標(biāo)簽的src屬性,因?yàn)檫@個(gè)屬性是不受域名限制的,我們可以直接讓src的這個(gè)鏈接指向跨域網(wǎng)站的一個(gè)接口, 這個(gè)接口返回的是js代碼或者json格式數(shù)據(jù), 從而實(shí)現(xiàn)跨域獲取數(shù)據(jù)。

假如有兩個(gè)域名不同的服務(wù)器, a.com和b.com, 在b.com/b_return_js.php這個(gè)接口里, 可以獲取一些數(shù)據(jù)。 當(dāng)然,假如是b.com的頁(yè)面里, 可以使用ajax, 直接請(qǐng)求這個(gè)接口, 但如果在a.com的頁(yè)面里如果請(qǐng)求呢。

b_return_js.php的接口代碼:

$a = array(
    array("username"=>"tony", "age"=>25),
    array("username"=>"yimeng", "age"=>23),
    array("username"=>"ermeng", "age"=>22),
    array("username"=>"sanmeng", "age"=>21),
);
shuffle($a);

echo "var userdata = ".json_encode($a).";"; //一般如果是b.com的站內(nèi)請(qǐng)求就直接返回json_encode($a)了, 但如果要用src屬性實(shí)現(xiàn)跨域, 這里我們需要將該值賦給一個(gè)js變量, 保證在script標(biāo)簽加載后的頁(yè)面里能獲取到這個(gè)數(shù)據(jù)并使用。
簡(jiǎn)單實(shí)現(xiàn)

有一種簡(jiǎn)單的方法就是在a.com下的頁(yè)面里, 直接


這樣在a.com的頁(yè)面里就能直接獲取到這個(gè)接口里返回的數(shù)據(jù)了。
但這里有一個(gè)缺陷,這個(gè)數(shù)據(jù)只能在頁(yè)面加載的時(shí)候獲取到, 假如我們想要使用ajax那種可以隨時(shí)獲取新的接口數(shù)據(jù)的方式就不太適用了, 例如點(diǎn)擊一個(gè)按鈕, 從這個(gè)接口獲取數(shù)據(jù)局部刷新, 這種方式就有一些不合適了。

類ajax實(shí)現(xiàn)

其實(shí)實(shí)現(xiàn)上面說的類ajax的思路就是在ajax條件觸發(fā)的時(shí)候, 重新生成一遍上面的那個(gè)標(biāo)簽, 從而再次從接口獲取數(shù)據(jù), 但實(shí)際上實(shí)現(xiàn)起來還是略有難度(至少對(duì)我來說費(fèi)了不少功夫)。

上代碼:

假如a.com/scriptSrc.php頁(yè)面下有一個(gè)按鈕


每次點(diǎn)擊都會(huì)從b.com/b_return_js.php接口獲取數(shù)據(jù), 類似ajax的實(shí)現(xiàn)代碼:

function createScript()
{
    //console.log(ele);
    ele.src = "http://b.com/b_return_js.php";
    ele.type = "text/javascript";
    ele.language = "javascript";
}

function getData()
{
    console.log(userdata);
}

$("#ajax_request_from_b").click(function(){

    //每次都需要重新加載這個(gè)script標(biāo)簽, 因此每次都要重新生成一個(gè)新的script標(biāo)          簽保證能從跨域服務(wù)器獲取數(shù)據(jù)
    if(ele && ele.parentNode)
    {
        //ele.parentNode.removeChild(ele);  //這種刪除不能將ele徹底從內(nèi)存刪除,只是移除了在dom中的位置
        for (var property in ele) {            
            delete ele[property];        //徹底刪除
         } 
    }
    ele = document.createElement("script"); //這是一個(gè)新的ele
    createScript();
    document.getElementsByTagName("head")[0].appendChild(ele);
    ele.onload = function(){getData()};  //script元素加載后方可獲取userdata, 每次獲取的都是隨機(jī)順序的用戶信息
});

這樣你每次點(diǎn)擊按鈕, 都會(huì)重新從接口獲取一遍數(shù)據(jù), 效果就類似于ajax, 但這是一種js跨域的方法實(shí)現(xiàn), 雖然有些吃力不討好, 但不失為一種思路。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/85375.html

相關(guān)文章

  • ajax之面試必問跨域問題

    摘要:可以說是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。只能設(shè)置為主域名,不可以在中將設(shè)置為。問題安全性,當(dāng)一個(gè)站點(diǎn)被攻擊后,另一個(gè)站點(diǎn)會(huì)引起安全漏洞。在此處執(zhí)行利用和這個(gè)辦法比較繞,但是可以解決完全跨域情況下的腳步置換問題。 ajax之面試必問跨域問題,如果你知道jsonp就弱爆了,往深處稍微問那么一丟丟,你就會(huì)被虐的萬(wàn)劫不復(fù)...個(gè)人總結(jié)ajax: 1、什么是跨域2、d...

    wind3110991 評(píng)論0 收藏0
  • ajax之面試必問跨域問題

    摘要:可以說是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。只能設(shè)置為主域名,不可以在中將設(shè)置為。問題安全性,當(dāng)一個(gè)站點(diǎn)被攻擊后,另一個(gè)站點(diǎn)會(huì)引起安全漏洞。在此處執(zhí)行利用和這個(gè)辦法比較繞,但是可以解決完全跨域情況下的腳步置換問題。 ajax之面試必問跨域問題,如果你知道jsonp就弱爆了,往深處稍微問那么一丟丟,你就會(huì)被虐的萬(wàn)劫不復(fù)...個(gè)人總結(jié)ajax: 1、什么是跨域2、d...

    alaege 評(píng)論0 收藏0
  • ajax之面試必問跨域問題

    摘要:可以說是構(gòu)建在同源策略基礎(chǔ)之上的,瀏覽器只是針對(duì)同源策略的一種實(shí)現(xiàn)。只能設(shè)置為主域名,不可以在中將設(shè)置為。問題安全性,當(dāng)一個(gè)站點(diǎn)被攻擊后,另一個(gè)站點(diǎn)會(huì)引起安全漏洞。在此處執(zhí)行利用和這個(gè)辦法比較繞,但是可以解決完全跨域情況下的腳步置換問題。 ajax之面試必問跨域問題,如果你知道jsonp就弱爆了,往深處稍微問那么一丟丟,你就會(huì)被虐的萬(wàn)劫不復(fù)...個(gè)人總結(jié)ajax: 1、什么是跨域2、d...

    Lyux 評(píng)論0 收藏0
  • iframe,我們來談一談

    摘要:通常我們可以在后配置各種指定資源路徑,有如果你未指定的話,則是使用規(guī)定的加載策略默認(rèn)配置就是同域這里和有一點(diǎn)瓜葛的就是和就是用來指定的有效加載路徑。 某大咖說: iframe是能耗最高的一個(gè)元素,請(qǐng)盡量減少使用某大牛說: iframe安全性太差,請(qǐng)盡量減少使用...wtf, 你們知不知道你們這樣澆滅了多少孩紙學(xué)習(xí)iframe的熱情和決心。 雖然,你們這樣說的我竟無(wú)法反駁,但是ifram...

    awesome23 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Batkid

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<