JQuery中的ajax方法可通过JSONP进行远程调用,以下是实现步骤:
-
在使用jquery的ajax方法时,设置dataType为jsonp。
-
JSONP支持的是GET方式的请求,所以ajax的type属性应该设置为GET。
-
jsonp的url地址带上参数callback=?,这个?会自动替换为随机名字的回调函数,这个回调函数其实就是通过jsonp请求的代码。
-
在后台代码中,服务端应该通过query参数获取callback的值,然后将结果包装成JSONP的格式,返回给前端。
-
前端代码中,自定义回调函数,将返回的数据作为参数传递给回调函数进行渲染。
下面是两个示例说明:
示例1:使用jsonp读取豆瓣开放API的示例
$.ajax({
type: 'GET',
url: 'https://api.douban.com/v2/book/search?q=javascript&count=1&callback=?',
dataType: 'jsonp'
}).done(function(data){
console.log(data);
});
通过jsonp方式调用豆瓣API,并在控制台打印返回结果。
示例2:利用jsonp调用自己搭建的服务器接口的示例
前端代码
$.ajax({
type: 'GET',
url: 'http://localhost:8080/api/user?callback=?',
dataType: 'jsonp'
}).done(function(data){
console.log(data);
});
后台代码
const http = require('http');
http.createServer((req, res) => {
if (req.url.startsWith('/api/user')) {
const callback = req.url.split('=')[1];
const data = { name: 'Alice', age: 25 };
const result = `${callback}(${JSON.stringify(data)})`;
res.writeHead(200, { 'Content-Type': 'application/json;charset=utf-8' });
res.end(result);
}
}).listen(8080, () => console.log('Server started.'));
此示例中,前端通过jsonp方式调用后台搭建的接口,后台将结果按照JSONP格式包装,返回给前端。前端自定义回调函数,将返回结果作为参数进行处理。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:jquery中的ajax方法怎样通过JSONP进行远程调用 - Python技术站