【问题标题】:VBScript (Classic ASP ) and multiple ajax calls side by sideVBScript (Classic ASP) 和多个 ajax 调用并排
【发布时间】:2011-12-14 07:07:00
【问题描述】:

我有一次 ajax 调用,它确实连接到数据库,在数据库中设置一个标志,并等待其他查找标志的进程创建一个文件。

在服务器上创建文件之前,ajax 一直在等待。创建文件后,ajax 会读取文件并显示内容。

现在的问题是,有时创建文件的后端进程陷入了套接字问题,并且从未创建过文件,但是 ajax 在这种情况下一直等待,只有在发生超时时才会超时,

我只想显示一个停止请求按钮,它可以停止当前的 ajax 请求,因为超时时间很长,用户可能希望在超时之前停止它。

这是我尝试过的,我修改了一直查找文件存在的代码,并添加了会话变量检查,例如 if Session("AbortCheck") = true then exitout from the script。

并放置另一个 ajax 调用来更新 sessin 变量,以便在循环中当脚本找到 session = true 时它会立即停止请求。

在调试时,我发现我的新 ajax 请求更新会话变量仅在第一个 ajax 完成时才实际执行。因此它永远不会在用户请求停止请求时停止。

谁能告诉我如何在用户输入时停止正在运行的 ajax(这需要时间)?

谢谢

【问题讨论】:

  • 你使用的是原生 XMLHTTP 吗?
  • 我正在使用它来获取 xml http 函数 GetXmlHttpObject() { if (window.XMLHttpRequest) { return new XMLHttpRequest(); } if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); } 返回空值; }`

标签: ajax vbscript asp-classic timeout


【解决方案1】:

也许您可以在 AJAX 脚本中实现一些错误管理,而不是让用户来管理。

            'Try to open the socket here

            on error resume next

            if err<>0 then
               Response.Write("1")
            else
               Response.Write(fileContent)
            end if      

如果 AJAXs 脚本返回 1,则调用者脚本会通知用户错误。

【讨论】:

  • 您好,感谢您的回复。但是我已经实现了错误管理,比如如果文件大小是 0kb,我让用户知道它,或者如果我需要阅读的文件有问题。在这里,由于我的脚本陷入循环,我正在检查文件系统目录,以检查文件是否到达,并且由于它需要时间,我想停止用户选择的请求。 (需要用户选择,因为它的 VMS 操作系统实时图形绘制 ajax)并且连接到 VMESX os 需要时间,所以我的超时时间更长。谢谢。
  • 那么使用jQuery abort 怎么样?看到这个问题:stackoverflow.com/questions/446594/…
  • 嗨朱利安我试过这个
     ajax 调用与 jquery 作品,但中止不工作。这是我的代码 var xmlhttp2; myAjaxfunction() { xmlhttp2 = $.ajax({ type: "GET", url: "serverSideAjaxPage.asp", data: "Function=FunctionName&nodename="+nodename, }).done(AjaxCallBackFunction); } 
    这是在停止请求点击函数 AbortAjax() { if(xmlhttp2) { alert('aborting xmlhttp2'+xmlhttp2); 时调用的函数xmlhttp2.abort(); alert('中止 xmlhttp2'+xmlhttp2);在第二个警报中,我将 xmlhttp2 作为对象,并且它没有中止。我错过了什么吗?
  • 我进一步分析,发现请求被中止但仅在客户端,并且在服务器端运行的代码[文件系统对象的asp代码中的循环仍在运行],如何服务器端执行可以在进程中停止吗?感谢您的帮助。
  • 即使在中止 ajax jquery 调用后,服务器代码的执行仍在进行中,您能否建议我是否可以触发以某种方式停止?
【解决方案2】:

我已经通过从服务器端删除循环来修复服务器端执行,该循环不断检查文件,并在 js 文件中放置一个循环以重新检查相同,对于握手,如果在服务器上找不到文件,我通过消息作为等待 ajax 和另一个标志用于从 jquery 中止检查,这解决了问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多