Javascript 返回$.getJSON函数的结果
我需要用ajax加载一个php脚本,它将创建一个JSON结果。 getEvent.php的一个示例是:Javascript 返回$.getJSON函数的结果,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,我需要用ajax加载一个php脚本,它将创建一个JSON结果。 getEvent.php的一个示例是: [{"id":"1","start":"Wed Jul 18 12:00:00 GMT+0200 2012","end":"Wed Jul 18 13:30:00 GMT+0200 2012","title":"leer"}] 为了将这个结果传输到另一个函数,我必须能够将它分配给一个变量。我尝试了很多方法,但都没有成功 function loadEvents(){ var cdata;
[{"id":"1","start":"Wed Jul 18 12:00:00 GMT+0200 2012","end":"Wed Jul 18 13:30:00 GMT+0200 2012","title":"leer"}]
为了将这个结果传输到另一个函数,我必须能够将它分配给一个变量。我尝试了很多方法,但都没有成功
function loadEvents(){
var cdata;
$.getJSON({
type: 'GET',
url: 'getEvent.php',
asynch:false,
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function(jsonData) {
cdata = jsonData;
},
error: function() {
alert('');
}
});
return cdata;
}
cdata=jsonData似乎不起作用
我只找到了将结果的一部分(jsonData)分配给变量的方法,但似乎无法返回整个jsonData
有人能帮我解决这个问题吗?我必须将完整的jsonData返回给另一个函数
感谢
getJSON
是一个异步函数(只需要一个url,不需要设置对象()),这意味着它将在服务器完成应答后立即返回结果。同时,您的函数将继续执行。因此,当您返回cdata时,您的成功函数尚未执行。您需要使用回调或将函数设置为同步(您正在尝试执行此操作,但其中有一个输入错误-它是不带h的async
)。此外,如果要传递其他设置,您不能使用getJSON()
,但必须使用
使用回调可能是更好的解决方案,而不是使调用同步:
而不是
success: function(jsonData) {
cdata = jsonData;
},
写:
success: function(jsonData) {
workWithResult(jsonData);
},
// this is called the "callback" function, it is executed when the ajax-request
// returned successfully
function workWithResult(data){
// now you can work with the data, which is guaranteed to exist
}
首先,为什么要使用getJSON? $.ajax似乎更适合您的需求 第二,, 返回cdata的那一刻是在服务器响应之前。一旦服务器响应,您的成功处理程序将被执行。在当前情况下,您将无法获取您要查找的数据。:) 您可以做的是将变量cdata设置为全局变量。 只需在success handler中为cdata分配值(您已经这样做了) PS:使变量全局化不是一个好的编程实践。(或者至少我不建议使用全局变量) 发布您的具体需求,比如您将以何种方式使用返回的值。这样我们就可以看到如何避免这种全球性的野兽 例如:
success: function(result){
yourTargetFunction(result); // call the target function with returned data as a paramenter to it
}
您将
async
拼错为asynch
。而且,由于您传递的是设置
对象,因此您应该使用url
@JonathanLonowski,而不是期望url。@JonathanLonowski您的评论在sirYup当天获胜,如果cdata未定义,这可能是原因感谢您的回答。它帮助我理解了这个问题,也解决了这个问题!=)