我在我的 node.js 函数中使用 JSONP:
this.send(JSON.stringify({
type: 'hello',
username: this.data('username'),
friends: friends
}));
但是,它给了我一个意外的令牌“:”错误(我在 json 中看不到)。阅读这篇文章后:'Uncaught SyntaxError: Unexpected token :' in jsonp
我发现这可能是一个 json/jsonp 问题。所以我将代码更改为:
this.jsonp(JSON.stringify({
type: 'hello',
username: this.data('username'),
friends: friends
}));
但是,它说这没有方法“jsonp”。我也不能使用发送,因为我在客户端使用 jsonp。这很奇怪,因为除了这里,我可以在其他任何地方使用 jsonp。以下是 user.js 文件中的一些函数。
User.prototype.send = function(code, message, callback) {
this._send('listener', code, message, callback);
};
User.prototype._send = function(type, code, message, callback) {
if(!message && typeof code != 'number') {
callback = message;
message = code;
code = 200;
}
if(typeof message != 'string')
message = JSON.stringify(message);
if(type == 'connection' && this.connection) {
this.connection.writeHead(code || 200, {
'Content-Type': 'application/json',
'Content-Length': message.length
});
this.connection.end(message);
} else {
if(!this.listeners.length)
return this.message_queue.push(arguments);
var cx = this.listeners.slice(), conn;
this.listeners = [];
while(conn = cx.shift()) {
conn.writeHead(code || 200, {
'Content-Type': 'application/json',
'Content-Length': message.length
});
conn.end(message);
}
if(callback) callback();
}
};
看起来它正在调用内部的发送函数,但是,我找不到将这个 json 更改为 jsonp 的位置,因此它不会在客户端抛出意外的令牌错误。(现在它自从 json 和 jsonp 问题) .