簡體   English   中英

javascript已調用但未在頁面上加載

[英]javascript called but not loaded on page

我正在對我們使用的工具進行更改,但無法加載本地javascript文件。jquery庫鏈接可以正常運行:

builder.append("<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js'></script>");

但是項目中存儲的js文件似乎返回空白頁。

builder.append("<script src='/SessionInfo/js/session.js'></script>");

該項目使用了一個自定義控制器,該控制器根據uri路由請求,以下是代碼段:

if ( lowerCaseUri.matches("/sessioninfo/v1/userid/?") ) {
     UserIDHandlerV2.handleUserIdPrompt(output);
  } else if ( lowerCaseUri.matches("/sessioninfo/v1/userid/.*") ) {
     UserIDHandlerV2.handleUserIdSessionListDisplay(request, output);
  } else if ( lowerCaseUri.matches("/sessioninfo/js/.*") ) {
      response.setContentType("text/javascript");
  }

查看fiddler和chrome工具,它顯示了200個返回正確內容類型的響應,但是傳輸了0個字節,並且在資源/腳本中顯示了空白頁。

我建議放棄“基於uri路由請求的自定義控制器”,並使用URL重寫過濾器(例如Tuckey Urlrewrite過濾器)

您的問題顯然是您的自定義控制器不起作用。 一方面,請看以下內容:

else if ( lowerCaseUri.matches("/sessioninfo/js/.*") ) 
{
   response.setContentType("text/javascript");
}

如果有對javascript文件的請求,則您對該請求所做的一切就是將內容類型設置為javascript。 您不是在閱讀JavaScript文件並為其提供服務。

您正在做的是嘗試構建自己的url重寫,這不是必需的。

您也可以將/sessioninfo/js/.*從控制器中/sessioninfo/js/.* 我假設這些只是普通的.js文件,對不對? 那么,為什么要使用控制器來路由它們呢? 控制器的目的是當您需要在視圖上放置后端信息時,因此您首先將用戶發送到控制器(即Servlet),然后控制器設置請求屬性,然后轉發到僅顯示它們的JSP。

使用HttpServletRequest#getContextPath附加這些源:

builder.append("<script src='" + request.getContextPath() + "/SessionInfo/js/session.js'></script>");

暫無
暫無

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

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