用nodejs實(shí)現(xiàn)json和jsonp服務(wù)的方法
一、JSON和JSONP
JSONP的全稱是JSON with Padding,由于同源策略的限制,XmlHttpRequest只允許請(qǐng)求當(dāng)前源(協(xié)議,域名,端口)的資源。如果要進(jìn)行跨域請(qǐng)求,我們可以通過使用html的script標(biāo)記來進(jìn)行跨域請(qǐng)求,并在相應(yīng)中返回要執(zhí)行的script代碼,其中可以直接使用JSON傳遞javascript對(duì)象。這種跨域的通訊方式成為JSONP。
由此我們可以看出兩者的區(qū)別:
json: 一種輕量級(jí)的數(shù)據(jù)格式。
jsonp:為實(shí)現(xiàn)跨域,而采用的一種腳本注入方法。
備注:要了解更多json,可以參見我原先寫的一篇介紹json的文章:《JSON那些事》
二、實(shí)現(xiàn)
為了簡(jiǎn)單起見,我們要讀取數(shù)據(jù)都是
var data = {'name': 'jifeng', 'company': 'taobao'};
1. 服務(wù)器端代碼:
var http = require('http'); var urllib = require('url'); var port = 10011; var data = {'name': 'jifeng', 'company': 'taobao'}; http.createServer(function(req, res){ var params = urllib.parse(req.url, true); console.log(params); if (params.query && params.query.callback) { //console.log(params.query.callback); var str = params.query.callback + '(' + JSON.stringify(data) + ')';//jsonp res.end(str); } else { res.end(JSON.stringify(data));//普通的json } }).listen(port, function(){ console.log('server is listening on port ' + port); })
2. 游覽器端代碼,為方便起見,我直接用了jquery的方法
<html> <head> <script src="http://code.jquery.com/jquery-latest.js"></script> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> </head> <body> <script type="text/javascript"> function get_jsonp() { $.getJSON("http://10.232.36.110:10011?callback=?", function(data) { $('#result').val('My name is: ' + data.name); }); } </script> <a href="javascript:get_jsonp();" rel="external nofollow" >Click me</a><br /> <textarea id="result" cols="50" rows="3"></textarea> </body> </html>
jquery中g(shù)etJSON()方法可以參見:http://www.w3school.com.cn/jquery/ajax_getjson.asp
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
詳解基于Node.js的微信JS-SDK后端接口實(shí)現(xiàn)代碼
本篇文章主要介紹了詳解基于Node.js的微信JS-SDK后端接口實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下2017-07-07node.js版本降級(jí)/升級(jí)的實(shí)現(xiàn)
在項(xiàng)目開發(fā)過程中,不同項(xiàng)目使用的nodejs版本不同,有時(shí)會(huì)因?yàn)閚ode版本過高或太低,導(dǎo)致報(bào)錯(cuò),本文主要介紹了node.js版本降級(jí)/升級(jí)的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-05-05node.js express框架實(shí)現(xiàn)文件上傳與下載功能實(shí)例詳解
這篇文章主要介紹了node.js express框架實(shí)現(xiàn)文件上傳與下載功能,結(jié)合具體實(shí)例形式詳細(xì)分析了node.js express框架針對(duì)文件上傳與下載的前后臺(tái)相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-10-10詳解nodejs解壓版安裝和配置(帶有搭建前端項(xiàng)目腳手架)
這篇文章主要介紹了詳解nodejs解壓版安裝和配置(帶有搭建前端項(xiàng)目腳手架) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-12-12