Javascript jQuery.ajaxget之后出现意外的标记冒号JSON
我在nodejs上创建了一个以JSON格式返回数据的极简API 但每次我尝试调用ajaxget并将API作为URL传递时,我都会得到一个错误,从Chrome判断,我得到了一个意外的标记:error 下面是nodejs+express中的服务器代码: 从/is:{Name:Tom,Description:Hello是我!}返回的JSON 这是我从客户端js打来的电话:Javascript jQuery.ajaxget之后出现意外的标记冒号JSON,javascript,jquery,json,node.js,Javascript,Jquery,Json,Node.js,我在nodejs上创建了一个以JSON格式返回数据的极简API 但每次我尝试调用ajaxget并将API作为URL传递时,我都会得到一个错误,从Chrome判断,我得到了一个意外的标记:error 下面是nodejs+express中的服务器代码: 从/is:{Name:Tom,Description:Hello是我!}返回的JSON 这是我从客户端js打来的电话: $.ajax({ url: findUrl, type: 'get', dataType: 'jsonp'
$.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);
}
});
绘制错误时,我得到:jquery11108398571682628244_1403193212453未被调用
有人能帮我吗
我知道已经有人问过这个问题,但我还没有找到解决方案来修复我的程序。如果要使用dataType:json而不是jsonp来支持,服务器必须在响应中包含p或Padding
jQuery111108398571682628244_1403193212453({"Name":"Tom","Description":"Hello it's me!"})
语法错误,意外标记:,是因为JSONP被解析为JavaScript,其中{…}也表示。它只是利用JSON和JavaScript的类似语法来定义传递给全局函数调用的数据
默认情况下,jQuery将包含一个回调查询字符串参数,其函数名为:
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);
}
ExpressJS还包括已实现此条件的:
app.get( '/', function( req, res ) {
console.log( 'req received' );
res.jsonp({
Name : "Tom",
Description : "Hello it's me!"
});
});
检查您的数据类型-@Andreas:我猜您指的是jsonp,我将其更改为json。我现在得到无法加载的XMLHttpRequest。请求的资源上不存在“Access Control Allow Origin”标头。因此,不允许访问源“null”。我该如何解决这个问题?使用jsonp有不同的原因,一个例子是能够跨不同的域调用。jsonp是用于CORS的,如果需要通过javascript发出跨域异步请求,不能只使用json。jsonp不用于CORS。JSONP是我们在CORS被开发出来并得到浏览器支持之前使用的黑客。谢谢你澄清我的意思。JSONP适用于无法使用CORS的情况。JSONP请求的答案中的链接已断开。请更新。
app.get( '/', function( req, res ) {
console.log( 'req received' );
res.jsonp({
Name : "Tom",
Description : "Hello it's me!"
});
});