Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/447.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery.ajaxget之后出现意外的标记冒号JSON_Javascript_Jquery_Json_Node.js - Fatal编程技术网

Javascript jQuery.ajaxget之后出现意外的标记冒号JSON

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'

我在nodejs上创建了一个以JSON格式返回数据的极简API

但每次我尝试调用ajaxget并将API作为URL传递时,我都会得到一个错误,从Chrome判断,我得到了一个意外的标记:error

下面是nodejs+express中的服务器代码:

从/is:{Name:Tom,Description:Hello是我!}返回的JSON

这是我从客户端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);
    }
});
绘制错误时,我得到: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!"
    });
});