使用jQueryAjax返回JSON对象

使用jQueryAjax返回JSON对象,jquery,Jquery,这是一个非常简单的问题,所以请不要开玩笑。。。我得到了一个Web服务的URL,它将为我提供一个JSON对象。我希望使用jQuery的getJSON方法,例如 var myObj = $.getJSON("https://www.myurl/"); 然而,这与我使用console.log(myObj.toSource())时的工作方式不同,我似乎只是在控制台上编写了很多af JavaScript,而不是我的对象。我知道我可以用这个方法添加回调,我应该这样做: var thisJsonObj;

这是一个非常简单的问题,所以请不要开玩笑。。。我得到了一个Web服务的URL,它将为我提供一个JSON对象。我希望使用jQuery的getJSON方法,例如

var myObj = $.getJSON("https://www.myurl/");
然而,这与我使用console.log(myObj.toSource())时的工作方式不同,我似乎只是在控制台上编写了很多af JavaScript,而不是我的对象。我知道我可以用这个方法添加回调,我应该这样做:

var thisJsonObj;

$.getJSON("https://www.myurl/", function(result){
    thisJsonObj = result;

});

console.log(thisJsonObj.toSource());

这也不行。。。我哪里做错了?URL正常工作。

Ajax异步工作,因此您必须在回调函数中使用JSON对象:

var thisJsonObj;
$.getJSON("https://www.myurl/", function(result) {
    thisJsonObj = result;
    console.log(thisJsonObj);
});

此外,如果您使用外部webservice,您应该知道请求应该被视为。因此,检查您的URL是否有点像“callback=?”

虽然URL可能是Web服务的URL,但您是否应该调用Web服务内部的函数?例如,如果您有一个python微框架(例如在我的示例中),并且我想要在组合框中显示一个项目列表,那么我的python可能看起来有点像:

@app.route('/_gest_list.json')
def get_list():
    #return list of jsonified items
在jQuery中调用的

$.getJSON("/get_list.json", {}, function(data) {
    //Do something
});
想象一下,我正在调用函数
get\u list()
,该函数映射到Web服务/服务器的url,别名为
/get\u list.json


另外,如果使用ASP.Net访问数据,则必须编写类似(变量名).d的内容。ASP.Net中的所有JSON数据都包装在d中

如果是跨域调用,请在jquery中尝试jsonp而不是json。记住在服务器端代码中添加“回调”。Jquery永远不会仅使用json进行跨域调用,但您可以编写自己的Ajax函数以避免此限制。您对console.log的调用会在http请求启动后立即执行,但是在http请求完成之前不会调用您的回调,因此,调用console.log时不会设置thisJsonObj。如果将console.log调用移动到回调中,您应该会看到正确的结果