如何在文档加载时立即进行AJAX调用

时间:2010-05-10 13:31:15

标签: jquery ajax initialization

我想在加载文档后立即执行ajax调用。我正在做的是加载一个字符串,其中包含我将用于自动完成功能的数据。这就是我所做的,但它并没有调用servlet。

我删除了对各种JS脚本的调用以使其更清晰。我在我的代码中做了几个类似的AJAX调用,但通常是由click事件触发,我不知道文档加载时它的语法是什么,但我认为这就是它(但它不是):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script src="../js/jquery.js" type="text/javascript">
</script>
<link rel="stylesheet" href="../css/styles.css" type="text/css">
<link rel="stylesheet" href="../css/jquery.autocomplete.css" type="text/css">
<script type="text/javascript" src="../js/jquery.bgiframe.min.js">
</script>
<script type="text/javascript" src="../js/jquery.dimensions.js">
</script>
<script type="text/javascript" src="../js/jquery.autocomplete.js">
</script>
<script type="text/javascript">
  $(document).ready(function(){

          $.ajax({
                type: "GET",
                url: "AutoComplete",
                dataType: 'json',
                data: queryString,
                success: function(data) {
                        var dataArray = data;
                        alert(dataArray);
                        }
                });

     $("#example").autocomplete(dataArray);
  });
</script>
<title></title>
</head>
<body>
    API Reference:
<form><input id="example"> (try "C" or "E")</form>
</body>
</html>

编辑:我的代码现在看起来更像卡里姆:

$(document).ready(function(){
     $.ajax({
        type: "GET",
        url: "../AutoComplete",
        success: function(data) {
             $("#example").autocomplete(data);
        }
     });
 });

尽管如此,自动完成功能仍然无效(完全是另一个问题,所以我也会发布另一个问题,因此它有一个合适的标题)。

我发回的变量“数据”看起来像......“手稿|文字|信息对象|篮球|球|运动器材|狼蛛”.split(“|”);

如果我这样做

var dataArray = "Manuscript|Text|Information Object|Basketball|Ball|Sporting Equipment|Tarantula".split("|");

然后

$("#example").autocomplete(dataArray);

一切正常,但是当我从服务器获取dataArray的值时,它没有。

4 个答案:

答案 0 :(得分:10)

在调用jQuery API之前,你需要加载jQuery。

在您的代码段之前,加载jQuery ...

<script type='text/javascript' src='http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js'></script>

答案 1 :(得分:4)

由于XHR的异步性质,因为$ .ajax调用在启动自动完成之前而不是返回,所以你遇到了这个问题。发送请求,执行流入dataArray回调中填充success之前的下一个表达式。试试这个:

$(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "AutoComplete",
            dataType: 'json',
            data: queryString,
            success: function(data) {
                var dataArray = data;
                alert(dataArray);
                $("#example").autocomplete(dataArray);
            }
        });
});

这将确保仅在收到服务器的响应时初始化自动完成。

答案 2 :(得分:1)

只需使用

$(function() {
    // Your code here
});

还要确保响应确实是JSON。如果servlet给出错误,则在您的情况下将无法正确处理。使用firebug来查看是否调用了servlet以及响应是什么。或者在服务器端进行最少的日志记录。

答案 3 :(得分:0)

您可以使用Google Chrome浏览器开发者工具查看您的服务器返回的内容。要访问pres Ctrl + Shift + I并在开发人员工具视图中,请检查网络选项卡以查看是否存在任何可能的错误或错误数据。