GVKun编程网logo

jquery – 使用setTimeout定期进行自动完成的AJAX调用?

10

对于jquery–使用setTimeout定期进行自动完成的AJAX调用?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于java-jqueryajax调用在成功调用servlet时返回错

对于jquery – 使用setTimeout定期进行自动完成的AJAX调用?感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于java-jquery ajax调用在成功调用servlet时返回错误、javascript – Ajax调用,Java脚本Ajax调用和JQuery Ajax调用之间的区别、javascript – Jquery / ajax循环SetTimeout、javascript – 使用setTimeout()关闭jQuery UI的宝贵知识。

本文目录一览:

jquery – 使用setTimeout定期进行自动完成的AJAX调用?

jquery – 使用setTimeout定期进行自动完成的AJAX调用?

我想使用setTimeout函数,以便Ajax调用最多每1秒进行一次.

这就是我所拥有的.这显然不正确,但我不确定setTimeout函数是如何工作的.

function autoComplete(q,succ)
{

    setTimeout(

    if(q != "") {
        $.ajax({type:"GET",url: "PHP/search.PHP",data: "q="+q,success: succ
        });
    },1000);
}

我认为我应该使用clearTimeout,以便如果进行另一次调用,它将重置计时器并等待另一个1秒,但是当我尝试实现它时,它停止运行该函数.

解决方法

通过…功能:)

使用匿名函数可能如下:

var timeoutId
function autoComplete(q,succ)
{
    if (q) {
        // stop prevIoUs timeouts
        clearTimeout(timeoutId)
        timeoutId = setTimeout(function () {
            $.ajax({type:"GET",success: succ
            });
         },1000);
    }
}

注意我在外面移动q的支票.这不会同时运行两次超时,但可能会有多个正在进行的请求.为了防范这种情况,成功的回调需要一个警卫 – 一个简单的方法就是使用一个计数器.使用setTimeout中的q检查“当前q”可能会导致细微的竞争条件.

var timeoutId
var counter = 0
function autoComplete(q,succ)
{
    if (q) {
        // Increment counter to maintain separate versions
        counter++
        var thisCounter = counter
        clearTimeout(timeoutId)
        timeoutId = setTimeout(function () {
            $.ajax({type:"GET",success: function () {
                    // Only call success if this is the "latest"
                    if (counter == thisCounter) {
                       succ.apply(this,arguments)
                    }
                },});
         },1000);
    }
}

更智能的版本可能会在提交时读取当前值,因为上面的代码总是落后一秒……

现在,假设getQ是一个函数对象……

var timeoutId
var counter = 0
function autoComplete(getQ,succ)
{
    counter++
    var thisCounter = counter
    clearTimeout(timeoutId)
    timeoutId = setTimeout(function () {
        var q = getQ() // get the q ... Now
        if (q) {
            $.ajax({type:"GET",success: function () {
                    if (counter == thisCounter) {
                       succ.apply(this,});
         }
     },1000);
}

// example usage
autoComplete(function () { return $(elm).val() },successCallback)

快乐的编码.

需要考虑的一点是,上面没有解决的问题是,可能仍有多个飞行中的请求(第二个示例中的警卫只显示如何“抛弃”旧的响应,而不是如何适当地限制请求).这可以通过短队列处理并防止提交新的AJAX请求,直到获得答复或足够的“超时”已到期并且该请求被视为无效.

java-jquery ajax调用在成功调用servlet时返回错误

java-jquery ajax调用在成功调用servlet时返回错误

我有一个Servlet,可将用户添加到服务器端的文件中.
我通过jqueries ajax调用来调用它.
我可以在服务器上看到该方法已正确调用并添加了我的用户,但是在jquery调用中调用了错误回调.所有状态文本都显示为错误.
使用Firebug,响应似乎为空.为什么我无法获得成功的jQuery回调?

//Servlet Code
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws servletexception, IOException {
    String action = request.getParameter("action");
    String responseStr = "";
    if(action.equals("addUser")) 
    {  
      responseStr = addUser(request);       
    }
    System.out.println("Reponse:" + responseStr);  
    response.setContentType("application/json"); 
    response.setCharacterEncoding("utf-8"); 
    response.getWriter().println(responseStr);
}

private String addUser(HttpServletRequest request) throws IOException
{
    Storage s;

    s = Storage.load();
    String name = request.getParameter("name");
    String imageUrl = request.getParameter("imageUrl");
    User u = new User();
    u.setName(name);
    u.setimageUrl(imageUrl);
    s.addUser(u);
    s.save();
    return "success";
}

.

//javascript code
function addUser() {
    var name = $('#name').val();
    var imageUrl = $('#imageUrl').val();
    var url = "http://ws06525:8080/QCHounds/QCHoundServlet?action=addUser&name=${name}&imageUrl=${imageUrl}";
    url = url.replace("${name}", name);
    url = url.replace("${imageUrl}", imageUrl);
    $('#result').html(url);
    $.ajax({
      url: url,
      success: function( data ) {
         $('#result').html(data);
      },
      error: function(jqXHR, textStatus, errorThrown) 
      {
           alert("error: " + textStatus); 
           alert("error: " + errorThrown);
      }
    });


}

解决方法:

啊!感觉像个白痴.这是一个跨站点脚本问题.
我正在测试从磁盘上的html文件到服务器的调用,因此我的浏览器地址是

file://projects/myproject/content/Users.html<<<失败 代替: http://myboxname:8080/appname/Users.html<<<作品 实际的代码很好…

javascript – Ajax调用,Java脚本Ajax调用和JQuery Ajax调用之间的区别

javascript – Ajax调用,Java脚本Ajax调用和JQuery Ajax调用之间的区别

如果通过纯Java脚本方式,JQuery Way或JASON方式进行ajax调用,是否有任何区别?

我使用Java Script方式开发了一些代码,如果有任何额外的好处,我想是否应该将它更改为JQuery.

如果没有区别,我宁愿保持这种方式,并在我的下一个实现中考虑它.

解决方法:

jQuery是一个JavaScript库 – 它提供了一组函数作为帮助程序,它们可以包含常用函数的片段,但也可以包含针对不同浏览器qwerks的hack.

在进行AJAX调用时需要考虑一些事项,对于不同的浏览器,一些代码必须是不同的.使用jQuery,他们为你工作,你可以使用一个易于使用的功能,而不是编写自己的修复程序,并自己进行所有的测试.

javascript – Jquery / ajax循环SetTimeout

javascript – Jquery / ajax循环SetTimeout

嗨,我被困在我的setTimeout函数上.我想要做的是循环我的setTimeout为我的检索对话功能..我在setInterval上尝试了这个但是使用setInterval是我的应用程序的坏消息,这就是为什么我切换到setTimeout ..但我似乎无法弄清楚如何使setTimeout在完成加载后再次工作..这是我到目前为止所尝试的并且仍然试图让它在此刻工作..

使用Javascript:

id = setTimeout(function()
{
    $.ajax(
    {
        url: "includes/handlechat.PHP",
        type: "GET",
        data: data,
        dataType: 'json',
        success: function(result)
        {
            $("#clog").empty();
            $.each(result, function(rowKey, row) 
            {
                $("#clog")
                    .append('<p ><h4>'+ row.username +':</h4>' + row.message_content + '</p>' );
            });
        },
        complete: function () 
        { 
            clearTimeout(id);
        }
    })
}, 1101);

有什么提示或建议吗?

解决方法:

将代码放在函数中并在成功或完整处理程序中调用它:

function load() {
    setTimeout(function () {
        $.ajax({
            url: "includes/handlechat.PHP",
            type: "GET",
            data: data,
            dataType: 'json',  
            success: function (result) {
                $("#clog").empty();
                $.each(result, function (rowKey, row) {
                    $("#clog").append('<p ><h4>' + row.username + ':</h4>' + row.message_content + '</p>'); 
                }); 
            },
            complete: load
        });
    }, 1101);
}
load();

您还可以使用IIFE来避免在当前环境中创建另一个绑定:

(function load() {
   // setTimeout here
}());

javascript – 使用setTimeout()关闭jQuery UI

javascript – 使用setTimeout()关闭jQuery UI

我试图让我的jQuery UI对话框在5秒后关闭,但下面的代码没有做任何事情,任何建议?我确实用alert(“hellow”)测试它,它确实工作正常,但下面的代码不起作用.

success: function(data) {

 $(data).dialog({

    modal: true,
    width: 900,
    height: 600,
    resizable: false,
    title: thetitle,
    draggable: false,
    open: function(event, ui) {
        setTimeout('$(this).dialog("close");', 5000);                   
  }
}); 

为什么不在5秒后关闭我的对话框?它没有做任何事情.

解决方法:

您需要将setTimeout传递给实际函数,而不是字符串.

setTimeout(function() { 
   $(data).dialog("close");
 }, 5000);

当你传递一个字符串时,代码是eval’d,我很确定将它设置为全局对象(这就是为什么$(this).dialog永远不会工作).

请注意,这也不会采用上述方式(因为这也是此时的全局对象),但它仍然被认为比将字符串传递给setTimeout更好,更好.

今天关于jquery – 使用setTimeout定期进行自动完成的AJAX调用?的讲解已经结束,谢谢您的阅读,如果想了解更多关于java-jquery ajax调用在成功调用servlet时返回错误、javascript – Ajax调用,Java脚本Ajax调用和JQuery Ajax调用之间的区别、javascript – Jquery / ajax循环SetTimeout、javascript – 使用setTimeout()关闭jQuery UI的相关知识,请在本站搜索。

本文标签: