簡體   English   中英

如何從 Ajax 或 JavaScript 調用 Struts1 Action?

[英]How to call Struts1 Action from Ajax or JavaScript?

我需要在加載 JSP 時調用一個操作。 跟蹤訪問該頁面的用戶數量。

我有一個動作VisitorCounterAction ,它會更新數據庫。 在加載 JSP 時,我正在調用 ajax 函數callCounter()

{

        alert("callCounter");
        if (window.XMLHttpRequest)
        {// code for IE7+, Firefox, Chrome, Opera, Safari
        xmlhttp=new XMLHttpRequest();
        }
        else
        {// code for IE6, IE5
        xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
        }

        // i need some correction here
        xmlhttp.open("GET",VisitorCounterAction,false);
        xmlhttp.send(null);
        alert("callCounter returned from Action");
        }

我遇到了一個例外:

/web/guest/content?p_p_id=31&p_p_lifecycle=0&p_p_state=pop_up&p_p_mode=view&_31_struts_action=%2Fimage_gallery%2Fview_slide_show&_31_folderId=10605 generates exception: null

請幫我解決一下這個。 或任何其他方式來調用動作。 我無法重新加載頁面,因為它會再次調用 onload 函數。

謝謝,DJ

您需要在調用操作時指定正確的 url。 在您的 struts.xml 文件中,您將創建一個帶有名稱的操作條目。 假設名稱是 VisitorCounterAction。 請注意,這不是 Action 類的名稱,而是您在 struts.xml 中使用的名稱。

此外,您還需要配置 struts 來識別特定的擴展。 默認情況下它是 .do。

要請求該操作,您將使用:VisitorCounterAction.do。

所以試試:

  xmlhttp.open("GET","VisitorCounterAction.do",false);

還要注意 URL 周圍的雙引號,因為這是 xmlHttp 對象的 open() 方法中的字符串。

XMLHttpRequest 對象的open方法的第二個參數應該是一個字符串,它是請求的 URL。 在您的情況下,應該是 Struts 的 Action Mapping 映射到您的VisitorCounterAction 就像是:

xmlhttp.open("GET", "/viewCounterAction.do", false); 

如果您使用的是 Liferay 4.2,那么此鏈接可能會對您有所幫助( http://www.liferay.com/web/guest/community/wiki/-/wiki/Main/Ajax+Toolkit )。 Liferay 4.2 有自己的一組用於執行 AJAX 功能的 javascript API(在 jquery 中實現)。

暫無
暫無

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

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