簡體   English   中英

無需使用 jQuery 重新加載網頁即可更新經典 ASP DIV

[英]Update Classic ASP DIV without reloading the webpage using jQuery

這應該很簡單,所以,要么我想多了,要么讓它變得比它應該的更復雜。

我想更新 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 文件,即使發生錯誤也是如此。

我究竟做錯了什么?

看起來您總是返回canvas.asp頁面的完整結果, canvas.asp頁面將始終是一個完整的 HTML 文檔,與您的<div>效果canvas.asp

這里的問題是您如何處理傳遞回的部分內容,這歸結為您如何構建 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的部分過程進行更改。

雖然@Lankymart 提供的答案演示了所需的頁面模板和正確的代碼布局,從而實現了更大的靈活性,但答案是一個簡單的 Ajax 函數。

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

Ajax 請求執行“xmlUpdateScript.asp”並返回下一組坐標,這些坐標放置在 XML 文檔中並可呈現到地圖上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM