Nodejs 简单express的json和jsonp调用示例

Nodejs 简单express的json和jsonp调用示例

1.创建环境 cmd express

2.修改代码 app.js

/** 
 * Module dependencies. 
 */  

var express = require(‘express’)
, routes = require(’./routes’)
, user = require(’./routes/user’)
, http = require(‘http’)
, path = require(‘path’);

var app = express();

app.configure(function(){
app.set(‘port’, process.env.PORT || 3000);
app.set(‘views’, __dirname + ‘/views’);
app.set(‘view engine’, ‘jade’);
app.use(express.favicon());
app.use(express.logger(‘dev’));
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(path.join(__dirname, ‘public’)));
});

app.configure(‘development’, function(){
app.use(express.errorHandler());
});

app.get(’/’, routes.index);
app.get(’/users’, user.list);

app.get(’/jsonp’,function(req,res,next){ #返回jsonp
res.jsonp({status:‘jsonp’});
});

app.get(’/json’,function(req,res,next){ #返回json
res.jsonp({status:‘json’});
});

http.createServer(app).listen(app.get(‘port’), function(){
console.log("Express server listening on port " + app.get(‘port’));
});

3.在public目录下新建,ajax.html

<!DOCTYPE html>  
<html>  
<head>  
    <title></title>  
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">  
    <script src="http://code.jquery.com/jquery-latest.js"></script>  
</head>  
<body>  
<script type="text/javascript">  
    function get_jsonp() {  
        $.getJSON("http://127.0.0.1:3000/jsonp?callback=?",  #跨域调用  
                function(data) {  
                    $('#rjsonp').val('Jsonp info : ' + data.status);  
                });  
    }  
  
    function get_json(){   #Json调用  
        $.getJSON("json",  
                function(data) {  
                    $('#rjson').val('Json info : ' + data.status);  
                });  
    }  
</script>  
  
<a href="javascript:get_jsonp();">Click me for jsonp</a><br />  
<textarea id="rjsonp" cols="50" rows="3"></textarea>  
  
<a href="javascript:get_json();">Click me for jsonp</a><br />  
<textarea id="rjson" cols="50" rows="3"></textarea>  
  
</body>  
</html>  

4.测试

输入网址http://127.0.0.1:3000/ajax.html enter image description here


6 回复

Node.js 简单 Express 的 JSON 和 JSONP 调用示例

1. 创建环境

首先,我们需要创建一个 Express 应用程序。你可以使用以下命令来生成一个新的 Express 项目:

npm install express-generator -g
express myapp
cd myapp
npm install

这将生成一个基本的 Express 项目结构。

2. 修改代码

打开 app.js 文件并进行必要的修改,以便支持 JSON 和 JSONP 响应。

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');

var app = express();

app.configure(function(){
  app.set('port', process.env.PORT || 3000);
  app.set('views', __dirname + '/views');
  app.set('view engine', 'jade');
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.json());
  app.use(express.urlencoded());
  app.use(express.methodOverride());
  app.use(app.router);
  app.use(express.static(path.join(__dirname, 'public')));
});

app.configure('development', function(){
  app.use(express.errorHandler());
});

// 返回 JSONP
app.get('/jsonp', function(req, res, next) {
  res.jsonp({ status: 'jsonp' });
});

// 返回 JSON
app.get('/json', function(req, res, next) {
  res.json({ status: 'json' });
});

http.createServer(app).listen(app.get('port'), function(){
  console.log("Express server listening on port " + app.get('port'));
});

3. 在 public 目录下新建 ajax.html

public 目录下新建一个 ajax.html 文件,并添加以下 HTML 和 JavaScript 代码:

<!DOCTYPE html>
<html>
<head>
    <title>JSON and JSONP Example</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
    function get_jsonp() {
        $.getJSON("http://127.0.0.1:3000/jsonp?callback=?", function(data) {
            $('#rjsonp').val('Jsonp info: ' + data.status);
        });
    }

    function get_json() {
        $.getJSON("/json", function(data) {
            $('#rjson').val('Json info: ' + data.status);
        });
    }
</script>

<a href="javascript:get_jsonp();">Click me for JSONP</a><br />
<textarea id="rjsonp" cols="50" rows="3"></textarea>

<a href="javascript:get_json();">Click me for JSON</a><br />
<textarea id="rjson" cols="50" rows="3"></textarea>

</body>
</html>

4. 测试

启动你的 Express 应用程序:

node app.js

然后在浏览器中访问 http://127.0.0.1:3000/ajax.html。点击按钮,你应该会看到相应的 JSON 和 JSONP 数据显示在文本框中。

这样,你就成功地创建了一个简单的 Express 应用程序,能够处理 JSON 和 JSONP 请求。


jsonp调用时传递callback参数的是做什么用的?

jsonp的服务器回调函数,默认为callback,如果不取名字的时候,会随即生成 细节可参考 http://developer.51cto.com/art/201105/264791.htm?1364185021

请教:能解释下为什么请求 http://127.0.0.1:3000/ajax.html 不报404,而它文件明明是放在public这个目录下的?

app.use(express.static(path.join(__dirname, ‘public’)));

留意这一段代码,这段代码的作用,就是告诉服务器,我的静态资源文件都存放在代码目录下public目录

Node.js 简单 Express 的 JSON 和 JSONP 调用示例

为了实现一个简单的 Express 应用程序来演示如何返回 JSON 和 JSONP 响应,你可以参考以下步骤和代码示例。

1. 创建项目环境

首先,确保你已经安装了 Node.js 和 npm。然后使用 express-generator 创建一个新的 Express 项目:

npm install -g express-generator
express myproject
cd myproject
npm install

2. 修改 app.js

app.js 文件中添加两个路由处理函数,分别用于返回 JSON 和 JSONP 响应:

var express = require('express');
var app = express();

app.get('/json', function (req, res) {
    res.json({ status: 'json' });
});

app.get('/jsonp', function (req, res) {
    res.jsonp({ status: 'jsonp' });
});

app.listen(3000, function () {
    console.log('App is running on http://localhost:3000');
});

3. 在 public 目录下新建 ajax.html

public 目录下创建一个名为 ajax.html 的文件,并添加以下内容:

<!DOCTYPE html>
<html>
<head>
    <title>JSON and JSONP Test</title>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    <script src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
    function getJson() {
        $.getJSON("/json", function(data) {
            $('#resultJson').val('JSON info: ' + data.status);
        });
    }

    function getJsonp() {
        $.getJSON("http://localhost:3000/jsonp?callback=?", function(data) {
            $('#resultJsonp').val('JSONP info: ' + data.status);
        });
    }
</script>

<a href="javascript:getJson();">Click me for JSON</a><br />
<textarea id="resultJson" cols="50" rows="3"></textarea><br />

<a href="javascript:getJsonp();">Click me for JSONP</a><br />
<textarea id="resultJsonp" cols="50" rows="3"></textarea>

</body>
</html>

4. 测试

启动你的应用:

npm start

然后在浏览器中访问 http://localhost:3000/ajax.html。点击按钮,查看 JSON 和 JSONP 的结果。

总结

以上代码展示了如何在 Express 中设置两个路由来返回 JSON 和 JSONP 响应,并通过 jQuery 实现前端请求。JSONP 主要用于解决跨域请求问题。

回到顶部