2011-05-19 98 views
0

这里有一些奇怪的东西:我使用$ .getJSON从数据库中获取数据。它会返回有效的数据,但之后它不会显示在输入框中。当我在json调用之后插入警报(“bla”)时,它确实显示数据。我的假设是,在显示页面上的数据时,json调用还没有准备好。有没有办法等待json调用完成?这是我的代码:getJSON没有准备好显示数据之前返回的数据

$.getJSON("mvc/models/predictions.php?action=getpredictions&jsoncallback=?", function(data) { 

      // Replace markup on page 
      prediction[1] = data[0].prediction1; 
     }); 

     // Create output 
     <input type='text' name='prediction1' size='5' value='" + prediction[1] + "' /> 

回答

0

没错,您需要在ajax调用返回后填充输入框。您可以改变JSON返回函数内的输入值,如下所示:

$.getJSON("mvc/models/predictions.php?action=getpredictions&jsoncallback=?", function(data) { 
    $('input[name="prediction1"]').val(data[0].prediction1); 
}); 
+0

问题是,此json请求嵌套在另一个json请求中。当我将输入框(和其他代码)移动到这个json中时,来自另一个json的json数据不再可用于此代码中(它返回一个错误)。 – John 2011-05-19 08:58:30

+0

您能否发布您的完整代码,以便我们可以进行调试?它应该工作正常,只要确保json请求不引用相同的变量(即,在第一个json请求,调用函数(data1),第二个json请求函数(data2)等) – 2011-05-19 10:04:43

+0

我创建了一个小提琴显示2个嵌套的json请求,并在嵌套的请求中访问第一个json请求的结果。希望这可以帮助你。 http://jsfiddle.net/thfjh/ – 2011-05-19 10:25:37