这是我的密码:
var what = "some/url/path..."
$(document).ready(function () {
var _getInfo = function getInfo(what) {
$.ajax({
type: 'GET',
url: what,
crossDomain: true,
//data: "{}",
async: false,
jsonpCallback: 'jsonpCallback',
dataType: 'jsonp',
contentType: 'application/json',
success: function (data) {
console.log("Data found: " + data.responseText);
},
error: function (data) {
console.log("Data not found: " + data.responseText);
}
});
};
var retVal = JSON.parse(_getInfo(networksURL));
console.log("Return Value: " + retVal);
}); JSON对象在调试器的“网络”选项卡下返回得很好.没问题..。但是..。这是一个很大的但是,JSON对象不会通过上面的代码在console.log中显示。有什么想法吗?
哦,是的,我得到了这个错误: Uncaught :意外标记u,包含: var retVal = JSON.parse(_getInfo(networksURL));
谢谢
更新:
好的,错误已经消失了,但是我仍然在网络TAB下的CHROME调试器中得到了这个信息:
0:{id:23ef0d23-0d8d-4466-98da-81ef30791773,网络类型:1,控制器id:10.255.135.22,重定向类型:0,…} controllerIp:"10.255.135.22“id:"23ef0d23-0d8d-4466-98da-81ef30791773”名称:"n1“networkCost: 1351 networkType:1 networkWeight: 64888注释:”这是网络1的网络“redirectType:0 1:{id:8e2822b1-49a8-498-979b-2849cfa82148,网络类型:1,控制员id:10.255.150.24,重定向类型:0,…} 2:{id:678b4a01-a6a6-449f-966d-c50c74964729,网络类型:2,控制器id:10.255.150.22,重定向类型:0,…} 3:{id:b4b46748-511a-49bf-9d22-8da014c76cc2,网络类型:3,控制器id:10.255.654.22,重定向类型:0,…}
这就是回来的原因..。很好,但这是在控制台日志中:
未找到数据:未定义
有什么想法吗?
再次更新:
好吧,这就是我现在要说的:
0:{id:23ef0d23-0d8d-4466-98da-81ef30791773,网络类型:1,控制器id:10.255.135.22,重定向类型:0,…} 1:{id:8e2822b1-49a8-498e-979b-2849cfa82148,网络类型:1,控制器id:10.255.150.24,重定向类型:0,…} 2:{id:678b4a01-a6a6-449f-966d-c50c74964729,网络类型:2,控制器id:10.255.150.22,重定向类型:0,…} 3:{id:b4b46748-511a-49bf-9d22-8da014c76cc2,网络类型:3,控制器id:10.255.654.22,重定向类型:0,…}
它是上面相同的JSON对象,现在它在控制台日志中:
未找到数据:未定义的返回值:
零无属性
好的,我最终需要的是JSON对象通过responseText或data.responseText返回。
但我相信你在正确的轨道上,所以far...Thanks,让我们继续
发布于 2013-11-04 16:29:22
这里有几个问题:
_getInfo函数不可能将数据作为返回值返回。(您还缺少了一个尝试这样做的return语句。)
相反,删除async: false (无论如何都忽略它),并将一个回调函数传递给_getInfo_getInfo(networksURL,函数(数据){console.log(“返回值:”+ data);});JSON.parse。JSONP的本质是,当您看到它时,它已经被反序列化(解析)了。data.responseText,但是success函数接收的参数不是XHR对象,而是数据。从其中移除.responseText。因此,总之,一个最小的更新:
var what = "some/url/path..."
$(document).ready(function () {
_getInfo = function getInfo(what, callback) {
$.ajax({
type: 'GET',
url: what,
crossDomain: true,
//data: "{}",
async: false,
jsonpCallback: 'jsonpCallback',
dataType: 'jsonp',
contentType: 'application/json',
success: function (data) {
console.log("Data found");
callback(data);
},
error: function (data) {
console.log("Data not found");
callback(null); // Or whatever you want to use for the error case
}
});
};
_getInfo(networksURL, function(data) {
console.log("Return Value: ");
console.dir(data);
});
}); 单独:命名函数表达式:
var _getInfo = function getInfo() {
// ...
};...is是一种比较高级的构造。如果您不能百分之百地确定您是否需要它,我可能只需使用一个声明:
function getInfo() {
// ...
}(无论是否在名称的开头都有_,您的调用。)
https://stackoverflow.com/questions/19772264
复制相似问题