【发布时间】:2014-07-25 12:55:54
【问题描述】:
我有一个节点服务器和另一个服务器的应用程序通过 jquery 执行 AJAX jsonp 请求以获取参数的 json 数组,但是当我请求数据时 jquery 抛出此错误:
Uncaught TypeError: Cannot read property 'toLowerCase' of undefined
请求已发送,我得到响应,但我无法在 javascript 客户端获取数据
节点服务器:
var my_http = require('http');
var databaseUrl = "leitordecarga"; // "username:password@example.com/mydb"
var collections = ["tables"]
var db = require("mongojs").connect(databaseUrl, collections);
var callback = [];
db.tables.find(function(err,values){
if(err || !values){
console.log('error');
}else{
values.forEach(function(value){
callback.push(value);
});
}
});
my_http = require("http");
my_http.createServer(function(request,response){
response.writeHeader(200, {"Content-Type": "application/json"});
response.write(JSON.stringify(callback));
response.end();
}).listen(8080);
客户端的Javascript:
$(document).ready(function(){
$.ajax({
url:'http://localhost:8080/mongo.js',
dataType:'jsonp',
type: "GET",
jsonp : "callback",
contentType: "application/jsonp",
success: function(data){
console.log(data);
},
error: function(data){
console.log(data.getResponseHeader());
}
}).done(function( data ) {
console.log(data);
});
});
我使用 jquery 2.1.0 但我尝试了其他版本,但错误仍然存在
我的问题是如何获取成功子句中的数据
【问题讨论】:
-
错误指向哪一行代码?
toLowerCase没有在问题中的任何代码中直接提及。 -
嗯,这不是返回的 JSONP 响应,这将是您的第一个问题。
-
jquery 库中的错误引发的错误
-
o 试过 response.writeHeader(200, {"Content-Type": "application/jsonp"});在服务器端,但我得到这个:资源解释为脚本,但使用 MIME 类型应用程序/jsonp 传输:“localhost:8080/…”。
-
您正在发出 JSONP 请求并且您正在返回 JSON...这是您的问题。客户端需要一个 javascript 文件,而不是 json。你知道 JSONP 是什么吗?
标签: javascript jquery node.js jsonp