欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時間:2014年11月10日 09:12:06   投稿:hebedich  
在解決js的跨域問題的時候, 有多種方式, 其中有一種是利用script標(biāo)簽的src屬性,因為這個屬性是不受域名限制的,我們可以直接讓src的這個鏈接指向跨域網(wǎng)站的一個接口, 這個接口返回的是js代碼或者json格式數(shù)據(jù), 從而實現(xiàn)跨域獲取數(shù)據(jù)。

場景

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

b_return_js.php的接口代碼:

復(fù)制代碼 代碼如下:

$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)請求就直接返回json_encode($a)了, 但如果要用src屬性實現(xiàn)跨域, 這里我們需要將該值賦給一個js變量, 保證在script標(biāo)簽加載后的頁面里能獲取到這個數(shù)據(jù)并使用。

簡單實現(xiàn)

有一種簡單的方法就是在a.com下的頁面里, 直接

復(fù)制代碼 代碼如下:

<script src=">

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

類ajax實現(xiàn)

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

上代碼:

假如a.com/scriptSrc.php頁面下有一個按鈕

<input type="button" id="ajax_request_from_b" value="來自B.com的請求"/>
每次點擊都會從b.com/b_return_js.php接口獲取數(shù)據(jù), 類似ajax的實現(xiàn)代碼:

復(fù)制代碼 代碼如下:

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(){

    //每次都需要重新加載這個script標(biāo)簽, 因此每次都要重新生成一個新的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'); //這是一個新的ele
    createScript();
    document.getElementsByTagName("head")[0].appendChild(ele);
    ele.onload = function(){getData()};  //script元素加載后方可獲取userdata, 每次獲取的都是隨機順序的用戶信息
});

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

相關(guān)文章

  • HTML 自動伸縮的表格Table js實現(xiàn)

    HTML 自動伸縮的表格Table js實現(xiàn)

    在開發(fā)的過程中,表格Table有個缺陷,如果一行中某個單元格的超過一行,表格就不夠美觀了。
    2009-04-04
  • javascript判斷機器是否聯(lián)網(wǎng)的2種方法

    javascript判斷機器是否聯(lián)網(wǎng)的2種方法

    只有機器已經(jīng)聯(lián)網(wǎng)以后,web應(yīng)用才能啟動,下面使用javascript判斷機器是否聯(lián)網(wǎng),具體判斷代碼如下,有此需求的朋友可以參考下
    2013-08-08
  • 深入理解Ajax的get和post請求

    深入理解Ajax的get和post請求

    下面小編就為大家?guī)硪黄钊肜斫釧jax的get和post請求。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-06-06
  • Javascript 鏈式作用域詳細介紹

    Javascript 鏈式作用域詳細介紹

    這篇文章主要介紹了Javascript 鏈式作用域詳細介紹的相關(guān)資料,需要的朋友可以參考下
    2017-02-02
  • JavaScript寫的一個自定義彈出式對話框代碼

    JavaScript寫的一個自定義彈出式對話框代碼

    最近閑來無事,用js自己做了一個彈出式對話框,需要應(yīng)用彈出式對話框的朋友可以參考下。
    2010-01-01
  • Javascript?動態(tài)樣式控制方法

    Javascript?動態(tài)樣式控制方法

    這篇文章主要介紹了Javascript?動態(tài)樣式控制方法。文章總結(jié)了兩個方法使用style屬性來設(shè)置和定義好類選擇器的樣式,通過元素的ClassName屬性來設(shè)置其Class屬性值,需要的朋友可以參考一下
    2022-03-03
  • 文件預(yù)覽PDF.js使用技巧示例總結(jié)

    文件預(yù)覽PDF.js使用技巧示例總結(jié)

    這篇文章主要為大家介紹了文件預(yù)覽PDF.js使用技巧示例總結(jié),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • 終于解決了IE8不支持數(shù)組的indexOf方法

    終于解決了IE8不支持數(shù)組的indexOf方法

    今天,測試報過來一個js bug, 在IE8下有個js錯誤,但是在其它瀏覽器下(Firefox, Chrome, IE9)下面都很正常。后來調(diào)試發(fā)現(xiàn)原因是在IE8下,js數(shù)組沒有indexOf方法。
    2013-04-04
  • JavaScript中數(shù)組成員的添加、刪除介紹

    JavaScript中數(shù)組成員的添加、刪除介紹

    這篇文章主要介紹了JavaScript中數(shù)組成員的添加、刪除介紹,本文主要講解push()、unshift()、pop()、shift()等函數(shù)的應(yīng)用,需要的朋友可以參考下
    2014-12-12
  • JS也玩OO繼承

    JS也玩OO繼承

    JS也玩OO繼承...
    2007-01-01

最新評論