1. 程式人生 > >ajax 和跨域訪問

ajax 和跨域訪問

ajax與jsonp

ajax技術的目的是讓javascript傳送http請求,與後臺通訊,獲取資料和資訊。ajax技術的原理是例項化xmlhttp物件,使用此物件與後臺通訊。ajax通訊的過程不會影響後續javascript的執行,從而實現非同步。

同步和非同步
現實生活中,同步指的是同時做幾件事情,非同步指的是做完一件事後再做另外一件事,程式中的同步和非同步是把現實生活中的概念對調,也就是程式中的非同步指的是現實生活中的同步,程式中的同步指的是現實生活中的非同步。

區域性重新整理和無重新整理
ajax可以實現區域性重新整理,也叫做無重新整理,無重新整理指的是整個頁面不重新整理,只是區域性重新整理,ajax可以自己傳送http請求,不用通過瀏覽器的位址列,所以頁面整體不會重新整理,ajax獲取到後臺資料,更新頁面顯示資料的部分,就做到了頁面區域性重新整理。

同源策略
ajax請求的頁面或資源只能是同一個域下面的資源,不能是其他域的資源,這是在設計ajax時基於安全的考慮。特徵報錯提示:

XMLHttpRequest cannot load https://www.baidu.com/. No  
'Access-Control-Allow-Origin' header is present on the requested resource.  
Origin 'null' is therefore not allowed access.

$.ajax使用方法
常用引數:
1、url 請求地址
2、type 請求方式,預設是'GET',常用的還有'POST'
3、dataType 設定返回的資料格式,常用的是'json'格式,也可以設定為'html'
4、data 設定傳送給伺服器的資料
5、success 設定請求成功後的回撥函式
6、error 設定請求失敗後的回撥函式
7、async 設定是否非同步,預設值是'true',表示非同步

以前的寫法:

$.ajax({
    url: 'js/data.json',
    type: 'GET',
    dataType: 'json',
    data:{'aa':1}
    success:function(data){
        alert(data.name);
    },
    error:function(){
        alert('伺服器超時,請重試!');
    }
});

新的寫法(推薦):

$.ajax({
    url: 'js/data.json',
    type: 'GET',
    dataType: 'json',
    data:{'aa':1}
})
.done(function(data) {
    alert(data.name);
})
.fail(function() {
    alert('伺服器超時,請重試!');
});

// data.json裡面的資料: {"name":"tom","age":18}

課堂練習
製作首頁使用者資訊讀取

jsonp
ajax只能請求同一個域下的資料或資源,有時候需要跨域請求資料,就需要用到jsonp技術,jsonp可以跨域請求資料,它的原理主要是利用了<script>標籤可以跨域連結資源的特性。jsonp和ajax原理完全不一樣,不過jquery將它們封裝成同一個函式。

$.ajax({
    url:'js/data.js',
    type:'get',
    dataType:'jsonp',
    jsonpCallback:'fnBack'
})
.done(function(data){
    alert(data.name);
})
.fail(function() {
    alert('伺服器超時,請重試!');
});

// data.js裡面的資料: fnBack({"name":"tom","age":18});

課堂例項
獲取360搜尋關鍵詞聯想資料

$(function(){
    $('#txt01').keyup(function(){
        var sVal = $(this).val();
        $.ajax({
            url:'https://sug.so.360.cn/suggest?',
            type:'get',
            dataType:'jsonp',
            data: {word: sVal}
        })
        .done(function(data){
            var aData = data.s;
            $('.list').empty();
            for(var i=0;i<aData.length;i++)
            {
                var $li = $('<li>'+ aData[i] +'</li>');
                $li.appendTo($('.list'));
            }
        })        
    })
})

//......

<input type="text" name="" id="txt01">
<ul class="list"></ul>

相關推薦

ajax 訪問

ajax與jsonp ajax技術的目的是讓javascript傳送http請求,與後臺通訊,獲取資料和資訊。ajax技術的原理是例項化xmlhttp物件,使用此物件與後臺通訊。ajax通訊的過程不會影響後續javascript的執行,從而實現非同步。 同步和非同步 現

解決jquery ajax訪問post請求的時候,ie9以下無效(包括ie9)的問題

jquery src actor div tick 屬性 dex 啟用 logs 最近在做項目的時候遇到一個問題,就是跨域請求ajax的時候ie9以下的瀏覽器不可以訪問,直接執行error裏面的代碼,但是也不報錯,就上網查了查,發現了一個很好用的方法,在這裏記錄一下,也希望

ASP.NET MVC & WebApi 中實現Cors來讓Ajax可以訪問 (轉載)

詳細 簡介 part bsp bob 打印 不能 res user 什麽是Cors? CORS是一個W3C標準,全稱是"跨域資源共享"(Cross-origin resource sharing)。它允許瀏覽器向跨源服務器,發出XMLHttpRequest請求,從而克服了

第二百七十四節,同源策略訪問

ron 使用 outlook 是否 secure .com 相對 100% wid 同源策略和跨域訪問 什麽是同源策略 盡管瀏覽器的安全措施多種多樣,但是要想黑掉一個Web應用,只要在瀏覽器的多種安全措施中找到某種措施的一個漏洞或者繞過一種安全措施的方法即可。瀏覽器

Ajax

實時 ron script con tel -a web 表示法 web服務 1、Ajax 全稱asynchronous(異步的)JavaScript and XML,是一種無需加載網頁而更新網頁部分內容的技術。 同步:客戶端發起請求,然後客戶端一直等待服務器端處理,收到服

JQuery+ajax+jsonp 訪問

url .text java jquery rip getjson round show ajax <html> <head> <meta http-equiv="Content-Type" content="text/html; c

關於vue-cliaxsios的使用訪問資料的總結

一、安裝axsois   1.安裝:在vue-cli根目錄下安裝axsois    2.更改原型鏈方法:在main.js下更改:   3.在元件中使用: 二、跨域   1.在config/index.js 新增如下程式碼: proxyTable: { './api':{ targ

Web高階 AjaxCORS

Asynchronous JavaScript and XML 1. XMLHttpRequest 前端開發都知道,不多說。 var xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyS

JSONP操作01_本地訪問資料訪問資料

1.jsonp簡介 json 是一種資料格式 jsonp 是一種資料呼叫的方式。 1)什麼是jsonp 為了便於客戶端使用資料,逐漸形成了一種非正式傳輸協議,人們把它稱作JSONP,該協議的一個要點就是允許使用者傳遞一個callback引數給服務端,然後服務端返回資料時會將

同源策略訪問

1. 什麼是同源策略      理解跨域首先必須要了解同源策略。同源策略是瀏覽器上為安全性考慮實施的非常重要的安全策略。    何謂同源:        URL由協議、域名、埠和路徑組成,如果兩個URL的協議、域名和埠相同,則表示他們同源。    同源策略:       

解說同源策略訪問

  同源策略又名同域策略,通俗易懂的來說,同源就是(主機名+協議+埠號【若存在】)三者相同。也就是說javascript只可以操作自己域下的東西,不能操作其他域下的東西。比如百度下javascript是不可操作谷歌下的頁面。

[jQuery]Ajax實現訪問JSON

Ajax跨域訪問JSON 環境:.net4.0+jQuery+JSON.net 因為在跨域實現,所以這裡新建網站,這個網站只需要Ashx檔案 public void ProcessRequest(HttpContext context) { stringstrJs

jquery ajax訪問post請求的時候,ie9以下無效(包括ie9)

1. 設定瀏覽器安全屬性,啟用【通過域訪問資料來源】選項,如圖:   2.呼叫ajax方法時,設定crossDomain為相反的值。原文連結:https://bugs.jquery.com/ticket/12097 <!DOCTYPE html> &l

javaweb專案ajax訪問問題

在做專案中遇到了ajax的跨域訪問,尋求了好多時間,在不懈努力之下終於發現瞭解決辦法,與一般的不同的是,我是在伺服器端利用攔截器進行控制,即在每一次的請求中攔截器強制的加入Access-Control-Allow-Origin操作許可權,我的專案的架構採用Spr

JSONJSONP,原來ajax引用這個來實現訪問

第一個 下午 想要 進行 ava 客戶 als rep web客戶端 由於Sencha Touch 2這種開發模式的特性,基本決定了它原生的數據交互行為幾乎只能通過AJAX來實現。 當然了,通過調用強大的PhoneGap插件然後打包,你可以實現100%的Socket通訊和本

360瀏覽器 7.1版本相容模式,jQuery $.post $.ajax 訪問失效

這幾天在做一個跨域訪問的時候 360瀏覽器、ie、谷歌、火狐,其中360 7.1版本沒有傳送ajax請求,其他都好用, 弄了很久,終於找到了原因,360 7.1版本不允許ajax跨域訪問: 後臺程式碼如下: 後臺程式碼使用的是spring mvc, @RequestMap

解決ajaxspring的訪問問題

1. 在 ajax的dataType中給出的屬性值是jsonp 2. 在請求的方法中加上引數名為callback的引數 3. 使用@ResponseBody標籤表明該方法為非同步請求方法,返回值為Object    在return後的虛擬碼為  return new J

淺談jquery中的ajax請求請求

bold 錯誤 但是 font 方法 端口 ets 提示 access ajax請求數據的代碼: $(function () { $.ajax({ url:url,//請求文件所在的url type:"get",//請求的方式

實現AJAX訪問方式一

nbsp any logs type pin web ted class pattern 1.添加pom依賴 <dependency> <groupId>com.thetransactioncompany</groupId>

ajax訪問

跨域訪問 https nts mapping control 失敗 post ace func 前端js $.ajax({ url:"url", type:"post", dataType:"jsonp",