Ajax跨越請求失敗,解決

跨越請求

1.1什麼是跨域(兩個不一樣系統之間的訪問、調用)

1)域名不一樣,即兩個不一樣的應用。javascript

2)域名相同,可是端口不一樣,即同一個應用中的不一樣子系統。html

1.2 Ajax跨域請求的缺陷

1)建立testJsonp.jsp頁面java

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script type="text/javascript" src="/js/jquery-1.6.4.js"></script>
<title>Insert title here</title>
</head>
<body>
<textarea id="text" style="width: 1200px; height: 200px;"></textarea>
<input type="button" value="測試異步跨越" onclick="testajax()" />

<script type="text/javascript">
    function testajax(){
        $.ajax({
            url:"http://localhost:8081/category.json",
            type: "GET",
            success: function (data) {
                $("#text").val(JSON.stringify(data));
            }
        }); 
    }
</script>

</body>
</html>

 

 

 1.3測試Ajax跨越

 測試發現Ajax跨越請求失敗了jquery

 

解決方案jsonp跨域

 

在前面的測試中,咱們發現Ajax跨越請求時,json數據被瀏覽器禁用了。ajax

 

緣由:瀏覽器禁止遠程加載Json數據。(瀏覽器安全機制)json

 

 

 

如何解決呢?跨域

 

答:使用Jsonp方式。瀏覽器

 

 2.1Jsonp原理

2.1.1Jsonp 實現的前提

  瀏覽器容許跨越加載同源數據安全

  即在JavaScript腳本中發送請求,就能夠遠程加載js格式數據異步

 

2.1.2請求原理:

  (1異步請求的時候加上一個名爲callback的回調函數

  (2在接口中將返回的json格式數據假裝成js腳本格式

  (3)獲得js格式數據後,提取裏面的json數據。

 

2.2 修改testJsonp.jsp,指定異步請求爲jsonp方式。

<script type="text/javascript">
    function testajax(){
        $.ajax({
            url:"http://localhost:8081/category.json",
            type: "GET",
            dataType: "jsonp",   //jsonp請求
            jsonp:"callbackFunction",  //請求參數名
            jsonpCallback:"showData",  //回調函數名稱
            success: function (data) {
                $("#text").val(JSON.stringify(data));
            }
        }); 
    }
</script>

 2.3修改category.json文件,將返回數據包裝成js腳本。

 

2.4 再次發送ajax異步請求,使用jsonp方式

 

結論

  (1jsonpajax技術中的一種異步請求方式。

     2jsonp能實現跨越請求。

     3jsonp跨越時,須要指定一個回調函數,並使用該函數將返回的數據假裝成js腳本。

     4)獲取返回的js腳本後,jsonp自動提取其中的json數據。

相關文章
相關標籤/搜索