2010-05-28 108 views
1

再次遇到一些基本问题。jQuery与getJSON调用的问题

我需要修改一个函数,该函数先前返回了一个代码写入对象。 林现在试图通过$ .getJSON摆脱JSON对象

function getEventData() { 
     var result = ''; 

     $.getJSON("ajax.php?cmd=getbydate&fromdate=&todate=", function(data){ 
      result = data; 
     }); 
     return result; 
    } 

问题是,结果没有明显的原因回调函数来设置。

你们有解决方案吗?

编辑: 好的,我得到了一个被删除的答案。 我不得不升技改..

这是工作了答案:

function getEventData() { 
    var result = ''; 
    url = "ajax.php?cmd=getbydate&fromdate=&todate="; 
     $.ajax({ 
      url: url, 
      async: false, 
      dataType: 'json', 
      success: function(data){ 
        result = data; 
       } 
     }); 
    return result; 
} 
+0

我没有删除我的回答,但请注意,不建议使用此程序,因此尽可能避免使用此程序。 – Daff 2010-05-28 14:52:44

回答

1

应该以异步方式编程您的应用程序,这意味着您也应该为您的应用程序流使用回调函数,或者继续执行getJson回调函数。您也可以同步请求,然后应该能够返回值(或至少分配它并阻止该功能,直到回调完成),但是这完全不被推荐:

function getEventData() { 
     var result = ''; 

     result = $.ajax({ 
      url: "ajax.php?cmd=getbydate&fromdate=&todate=", 
      async: false, 
      dataType: "json", 
      data: data, 
      success: function(data){ 
        return data; 
       } 
     }); 
     return result; 
    } 
+0

我不得不改变它以使其起作用,但它做到了。 即使它不推荐它在现有函数中的黑客,我真的需要函数来正确地返回它。 – 2010-05-31 07:07:48

0

你确定服务器返回有效的JSON?使用像jsonlint这样的工具验证它会更好。还要确保application/json被用作响应的内容类型。

+0

我确定它的确定json。 在回调函数中,我可以通过console.log(data)来检查它,它是正确的。 – 2010-05-28 14:32:02