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

Jquery 如何在加载文档时立即进行AJAX调用,jquery,ajax,initialization,Jquery,Ajax,Initialization,我希望在加载文档后立即执行ajax调用。我正在做的是加载一个字符串,其中包含我将用于自动完成功能的数据。这就是我所做的,但它没有调用servlet 我已经删除了对各种JS脚本的调用,以使其更清晰。我在我的代码中做过几次类似的AJAX调用,但通常是由一个单击事件触发的,我不确定文档加载后立即调用的语法是什么,但我认为应该是这样(但不是): 尽管如此,自动完成仍然不起作用(无可否认,这是另一个问题,所以我也会发布另一个问题,这样它就有了一个合适的标题) 正在发回的变量“data”看起来像。。。“手稿

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

我已经删除了对各种JS脚本的调用,以使其更清晰。我在我的代码中做过几次类似的AJAX调用,但通常是由一个单击事件触发的,我不确定文档加载后立即调用的语法是什么,但我认为应该是这样(但不是):

尽管如此,自动完成仍然不起作用(无可否认,这是另一个问题,所以我也会发布另一个问题,这样它就有了一个合适的标题)

正在发回的变量“data”看起来像。。。“手稿|文本|信息对象|篮球|球|体育器材|狼蛛”.拆分(“|”)

如果我这样做

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

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

这一切都可以正常工作,但当我从服务器获得dataArray的值时,它就不能正常工作了。

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

在代码片段之前,加载jQuery

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

只需使用

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

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

您遇到了这个问题,因为由于XHR的异步特性,$.ajax调用在自动完成初始化之前不会返回。发送请求后,在
success
回调中填充
dataArray
之前,执行流进入下一个表达式。试试这个:

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

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

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

是的,我已删除脚本标记以使代码更清晰-我已使用firebug检查这些标记是否都可用。然后确保您返回格式良好的JSON。尝试摆脱“数据类型”并让jquery自动检测。至少你可以看到你的电话是否正常工作。另外,在调试时,我经常使用“完成”而不是“成功”。通过这种方式,您可以再次看到服务器吐出了什么(如果有的话)不起作用,但我觉得这不是我如何设计代码,而是一些配置或路径出了问题。谢谢你的帮助,好的。请记住,它将从HTML文件所在的路径调用服务器。因此,如果autocomplete脚本返回目录或其他内容,它将找不到它。尝试插入完整的URL。$(document).ready(函数(){});和$(函数(){});都是一样的。如果他想在页面加载完毕而不是DOM加载完毕时运行代码,他需要使用$(document).loadI将标记放回。它们有点冗长,但这是W3C验证器给我的。看起来是对的,假设您为了清楚起见跳过了jQuery链接。ajax调用可能失败了吗?如果尝试将函数挂起“完成”(或“错误”)事件而不是“成功”,会发生什么?你收到警报了吗?谢谢Matt,尝试了这些想法,但没有得到任何不同。谢谢,我尝试了类似的方法,但仍然不起作用,我问了另一个问题,可以更恰当地解释这个问题。
$(function() {
    // Your code here
});
$(document).ready(function(){
        $.ajax({
            type: "GET",
            url: "AutoComplete",
            dataType: 'json',
            data: queryString,
            success: function(data) {
                var dataArray = data;
                alert(dataArray);
                $("#example").autocomplete(dataArray);
            }
        });
});