2014-09-24 31 views
-1

好了,現在的問題是...

存着我所有的谷歌數據存儲「拯救訓練」爲文本對象。 當我查看我保存的鍛鍊時,服務器會將大量JSON對象中的所有保存的鍛鍊返回。我解析這些並在​​我的JSP頁面上按名稱顯示它們。

所有工作正常。

現在,如果我想再次使用保存的鍛鍊,我只需從數組中拉出鍛鍊JSON,然後使用jQuery $ ajax調用一個servlet(轉發到「showWorkout.jsp」)再次顯示鍛鍊使用傳入的JSON)。

問題似乎是$ ajax調用需要回調。它是否正確?

正如你所看到的,我試圖從我傳遞JSON的servlet轉發到「showWorkout.jsp」。回調似乎阻止了這一點。 「showWorkout.jsp」從不顯示,當前頁面不會更改。

我可以使用回調調用「showWorkout.jsp」幷包含JSON以顯示鍛鍊嗎?我寧願不將整個JSON作爲URL中的查詢參數。

OR ...我可以禁用回調並允許servlet轉發到JSP嗎?

謝謝!

+0

如果目標是在瀏覽器中加載全新頁面,則不應使用AJAK。您應該簡單地發佈JSON設置爲隱藏字段值的表單。如果目標是用servlet返回的HTML片段替換頁面的一部分,那麼您需要發送一個AJAX請求,並使用回調函數將接收到的HTML注入當前頁面的一個元素中。 – 2014-09-24 22:05:49

回答

1

你正在使用jquery,對不對?所以回調只不過是你在success : function(data) {...}中定義的函數。擔心回調的問題意味着你正在做舊式學習,而不是真正使用jQuery。

如果您嘗試轉發回執行ajax調用的jsp,則根本不會獲得ajax。這將刷新頁面,如果它的工作,而不是刷新頁面是整個Ajax點。你要做的就是把Ajax調用像一個異步函數調用,並做一些與響應回調時被觸發:

例如,打印在消息框中的響應:

success : function(data) { alert(data); } 

或者,把應答到一個div:

success : function(data) { document.getElemenyById('my_div').innerHTML = data; } 

如果你真的想擁有這個servlet着不同的頁面,或回到同一頁面,使用常規的HTML表單提交。

+0

所以基本上如果我想轉發到另一個JSP(例如showWorkout.jsp),我不能使用jQuery的$ .ajax調用,因爲回調將我帶回到同一頁面(我不想)。 每個保存的鍛鍊名稱都顯示在HTML無序列表中,所以這意味着我必須在每個項目周圍放置一個Form標記。或者用jQuery動態創建表單。 我認爲最簡單的做法是使用「location.href」並將workoutID傳遞給servlet,在數據庫中查找它並將其轉發給顯示JSP。這使我不得不第二次查看鍛鍊的JSON,但這不是什麼大問題。 – edcincy 2014-09-24 22:58:01