JavaScript

超轻量级php框架startmvc

jQuery使用JSONP实现跨域获取数据的三种方法详解

更新时间:2020-05-10 00:18:01 作者:startmvc
本文实例讲述了jQuery使用JSONP实现跨域获取数据的三种方法。分享给大家供大家参考,具体

本文实例讲述了jQuery使用JSONP实现跨域获取数据的三种方法。分享给大家供大家参考,具体如下:

第一种方法是在ajax函数中设置dataType为'jsonp'


$.ajax({
 dataType: 'jsonp',
 url: 'http://www.a.com/user?id=123',
 success: function(data){
 //处理data数据
 }
});

第二种方法是利用getJSON来实现,只要在地址中加上callback=?参数即可


$.getJSON('http://www.a.com/user?id=123&callback=?', function(data){
 //处理data数据
});

第三种方法是使用getScript方法


//此时也可以在函数外定义foo方法
function foo(data){
 //处理data数据
}
$.getScript('http://www.a.com/user?id=123&callback=foo');

实例演练:

index.html


<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>jsonp</title>
<script src="jquery-1.8.0.min.js"></script>
<script>
 $.ajax({
 type : "post",
 url : "jsonp.php?name=zhaoxiace&age=30",
 dataType : "jsonp",
 jsonp: "callbackParam",//传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
 jsonpCallback:"callbackFunction",//自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名
 success : function(data){
 console.log(data.statusCode + "/" + data.message + "/" + data.name + "/" + data.age);
 },
 error:function(){
 alert('请求失败');
 }
 });
</script>
</head>

jsonp.php


<?
$data["age"] = $_GET['age'];
$data["name"] = $_GET['name'];
$data["statusCode"]="200";
$data["message"]="成功";
$tmp= json_encode($data); //json数据
echo $callback . '(' . $tmp .')'; //返回格式,必需
?>

PS:关于json操作,这里再为大家推荐几款比较实用的json在线工具供大家参考使用:

在线JSON代码检验、检验、美化、格式化工具: http://tools.jb51.net/code/json

JSON在线格式化工具: http://tools.jb51.net/code/jsonformat

在线XML/JSON互相转换工具: http://tools.jb51.net/code/xmljson

json代码在线格式化/美化/压缩/编辑/转换工具: http://tools.jb51.net/code/jsoncodeformat

在线json压缩/转义工具: http://tools.jb51.net/code/json_yasuo_trans

jQuery JSONP 跨域 获取数据