更新经典ASP DIV而无需使用jQuery重新加载网页

时间:2016-09-28 14:53:50

标签: javascript jquery html ajax asp-classic

这应该非常简单,所以,无论是我过度思考还是让它变得更加复杂。

我想更新DIV而无需重新加载网页。

Canvas.asp上的表单查询数据库并返回GPS设备的坐标。坐标每分钟更新一次,并希望脚本返回最新的坐标而无需刷新页面。坐标附加到单独的XML文件。

我写过这个;

<script type="text/javascript">
    $(document).ready(function() {
      $("#map").load('canvas.asp');
      var auto_refresh = setInterval(function() {
        $("#map").load('canvas.asp?std=<%=session("7digit")%>&submit=Search&execute=1');
      }, 60000);
      $.ajaxSetup({ cache: false });
    });
</script>

要重新加载的div;

<div id="map"></div>

脚本通过复制标题和内容返回错误,60秒后地图DIV无处可见......简直消失!即使在出错之后,坐标也会每隔60秒附加到XML文件中。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

您似乎始终会返回canvas.asp页面的完整结果,该结果将始终是一个完整的HTML文档,与您的<div>无关。

这里的问题是你如何处理传递部分内容,这取决于你如何构建你的ASP页面。这是我经常用于此类事情的裸骨模板。

<%
    Option Explicit

    Dim action, def_action

    Const BASE_ERROR_VAL = 1000
    Const DISPLAY_PAGE = 0
    Const DISPLAY_CANVAS_CONTENT = 1

    'Without this the page does nothing, this is the gateway to your page.
    Call init()

    'First code that get's run when page is requested
    Sub init()
      'Defaults
      def_action = DISPLAY_PAGE

      'Process query string
      action = Request.QueryString("a") & ""
      If Len(action) > 0 and Isnumeric(action) then action = CInt(action) Else action = def_action

      Select Case action
      Case DISPLAY_PAGE
        Call load_page()
      Case DISPLAY_CANVAS_CONTENT
        Call load_canvas()
      Case Else
        'As we have a default this should NEVER happen, but always worth covering your bases.
        Call Err.Raise(vbObjectError + BASE_ERROR_VAL + 1, "canvas.asp", "Action required")
      End Select
    End Sub

    Sub load_page()
>%
<html>
  <head>
  ...
  </head>

  <body>
    <% Call load_canvas() %>
  </body>
</html>
<%
    End Sub

    Sub load_canvas()
%>
    <canvas>
    ...
    </canvas>
<%
    End Sub
%>

这纯粹是裸骨,只是为了让您了解如何处理它,所以例如只调用HTML的画布部分,你会使用像

canvas.asp?std=<%=session("7digit")%>&a=1

并且未完全通过&a (因为DISPLAY_PAGE是默认的)或传递

canvas.asp?std=<%=session("7digit")%>&a=0

显示整个HTML。

您可能还注意到我包含了

<% Call load_canvas() %>

load_page()过程中,这仅适用于您可能希望画布的内容也在完整过程中呈现,然后使用a=1通过部分过程更改后的情况

答案 1 :(得分:0)

虽然@Lankymart提供的答案演示了所需的页面模板和正确的代码布局,从而实现了更大的灵活性,但答案是一个简单的Ajax函数。

setInterval(ajaxRequest, 15000);
    function ajaxRequest() {
        $.ajax({
            type: 'GET',
            url: 'xmlUpdateScript.asp',
            data: {
                7digit: "<%=session("7digit")%>"
            }
        });
    }

Ajax请求执行&#39; xmlUpdateScript.asp&#39;并返回放置在XML文档中的下一组坐标,并可以将其渲染到地图中。