加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 业界 > 正文

jQuery实例:关于$.getJSON跨域Ajax要领

发布时间:2018-08-25 00:37:02 所属栏目:业界 来源:站长网
导读:到网上的教程都是给了一个例子,不知道行使$.getJSON实现跨域Ajax的要害在那边,颠末一段时刻的研究,现将成就写一下。 客户端: 行使$.getJSON()在传输第一个参数,也就是url时,假如是跨域哀求必然要有一个参数的值为?,如: Copy to Clipboard 引用的内

到网上的教程都是给了一个例子,不知道行使$.getJSON实现跨域Ajax的要害在那边,颠末一段时刻的“研究”,现将成就写一下。

客户端:

行使$.getJSON()在传输第一个参数,也就是url时,假如是跨域哀求必然要有一个参数的值为“?”,如:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] $.getJSON(
"http://202.196.35.41/json.php?callback=?",
function(data){
alert(data);
}
};

jQuery在发送哀求时会将这个“?”替代为一个独一的字符串,如下图

jQuery实例:关于$.getJSON跨域Ajax要领

而且声明一个与这个字符串名称沟通变量,将传入的回掉函数赋值给这个变量。

处事端:

处事端必然是动态的措施,不能是静态的文本文件,由于处事端要吸取到传过来的函数名,就是上图中callback的值jQuery172031288272701203823_1344179936251。

然后处事端结构一个函数挪用型的字符串,将必要发送给客户端的值做为参数。

也就是:jQuery172031288272701203823_1344179936251([这里传参数JSON数据])。

上PHP代码。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] <?php
header('Content-Type:text/javascript; charset=utf-8');
class User{
public $id;
public $name;
public function __construct($id, $name){
$this->id = $id;
$this->name = $name;
}
}
$users = array(new User(1, 'admin'), new User(2, 'root'));

echo $_REQUEST['callback'].'('.json_encode($users).')';

Ajax获得的数据:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] jQuery172031288272701203823_1344179936251([{"id":1,"name":"admin"},{"id":2,"name":"root"}])

客户端获得这个数据之后就执行这条语句,因为前面已经将$.getJSON()传入的回掉函数指定了同样的函数名,此时就会挪用传入的函数,并将数据传入。

详细的跨域哀求是操作了页面中可以引入其他域的js文件这本性子,在页面中建设一个script节点,将他的src属性指向其他域的动态文件。赏识器就会加载这个文件并执行个中的剧本。

网友评述:

这就是 JSONP,一样平常不必要这么贫困,配置 dataType: "jsonp" 就可以了,默认就会把 callback=? 加上。 只有当你不以 callback 为回调函数取名参数时你才必要用到问好,譬喻 myOwnCallbackFunctionName=?。

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读