K. *_* L. 8 javascript jquery json node.js
我在nodejs上创建了一个以JSON格式返回数据的极简主义API .
但是每当我尝试进行ajax #get调用并将我的API作为URL传递时,我会收到错误并从Chrome判断,我收到"Unexpected token :"错误;
这里是nodejs + express中的服务器代码:
var
http = require( 'http' ),
express = require( 'express' ),
app = express(),
server = http.createServer( app );
app.get( '/', function( req, res ) {
console.log( 'req received' );
res.setHeader('Content-Type', 'application/json');
res.end( JSON.stringify({
Name : "Tom",
Description : "Hello it's me!"
}) );
});
server.listen(3000, function() {
console.log( 'Listening on 3000' );
});
Run Code Online (Sandbox Code Playgroud)
返回的JSON "/"是:{"Name":"Tom","Description":"Hello it's me!"}.
这是我从客户端js的电话:
$.ajax({
url: findUrl,
type: 'get',
dataType: 'jsonp',
success: function ( data ) {
self.name( data.Name );
self.description( data.Description );
},
error: function( jqXHR, textStatus, errorThrown ) {
alert(errorThrown);
}
});
Run Code Online (Sandbox Code Playgroud)
在绘制错误时,我得到: "jQuery111108398571682628244_1403193212453 was not called"
有人能帮我吗?
我知道这个问题已被提出,但我还没有找到解决方案来修复我的程序.
要支持JSONP请求,服务器必须在响应中包含P或" 填充 ".
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
Run Code Online (Sandbox Code Playgroud)
语法错误,"Unexpected token :"是因为JSONP被解析为JavaScript,其中{...}也表示块.它只是利用JSON和JavaScript的类似语法来定义传递给全局函数调用的数据.
默认情况下,jQuery将包含一个callback带有函数名称的query-string参数:
var callback = req.query.callback;
var data = JSON.stringify({
Name : "Tom",
Description : "Hello it's me!"
});
if (callback) {
res.setHeader('Content-Type', 'text/javascript');
res.end(callback + '(' + data + ')');
} else {
res.setHeader('Content-Type', 'application/json');
res.end(data);
}
Run Code Online (Sandbox Code Playgroud)
ExpressJS还包括res.jsonp()已实现此条件:
app.get( '/', function( req, res ) {
console.log( 'req received' );
res.jsonp({
Name : "Tom",
Description : "Hello it's me!"
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14723 次 |
| 最近记录: |