JSONP的實現思路很簡單javascript
接口php
1
2
3
4
5
|
Sjax.load(
url,
// 跨越請求的URL
success,
// 回調函數,必須定義一個形參,用於接收後臺返回的全局變量jsonp (約定後臺返回如jsonp = {...}結構)
timestamp,
// 傳true會加一個時間戳,防止緩存,默認不加
);
|
示例:html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
<!DOCTYPE HTML>
<html>
<head>
<meta charset=
"utf-8"
>
<title>sjax_0.1.js by snandy</title>
</head>
<body>
<p id=
"p1"
style=
"background:gold;"
></p>
<input type=
"button"
value=
"Get Name"
onclick=
"clk()"
/>
<script type=
"text/javascript"
>
function
clk(){
Sjax.load(
function
(){
document.getElementById(
'p1'
).innerHTML =
'Hi, '
+ jsonp.name;
}
);
}
</script>
</body>
</html>
|
這個html實現一個最簡單的先後臺交互功能,點擊按鈕「Get Name」,獲取到name後顯示在段落P上。前端
clk函數中調用Sjax.load方法,Sjax中的S指script。以前個人Ajax系列中使用的Ajax命名,這裏就使用了Sjax。java
請求的後臺url是jsonp.js,它返回以下數據庫
1
|
jsonp = {name:
'jack'
};
|
由於是測試,這裏使用最簡單的方式實現。請求的後臺其實沒必要是js文件,能夠是php,java等任何後臺語言,它們可能會鏈接數據庫進行一系列的業務查詢。總之它最後返回的結構必須變量jsonp,這個變量就是一個js對象,至於有多複雜則無需關注。json