2012-02-10 84 views
0

我想從AJAX傳回參數到我的JSP頁面。下面是我的示例代碼:將參數從AJAX傳遞到JSP頁面

JS文件:

$(document).ready(function() { 
      $.ajax({ 
      type: "GET", 
      url: "URL...", 
      dataType: "xml", 
      success: function(xml) { 
       $(xml).find('Rowsets').each(function(){ 
          var x = $(this).find('Auto_Id').text() // Assign data from Auto_Id into variable x 
        document.form.y.value = x; // Pass the parameter back to the JSP page 
        }); 
       } 
    }); 
}); 

.jsp文件:

上面的代碼工作 - 我能夠得到參數x。但是,是否可以在同一個.JSP頁面上將x的值轉換爲以下格式?

<%= session.getAttribute("x") %> 

或者,得到x的值,並將其傳遞到Java標籤<%=%>?

這樣做的目的是在頁面加載時從XML中獲取參數(通過AJAX),將參數傳遞迴我的JSP頁面,以便我可以使用它來動態創建URL(例如「http:// xyz & Param =「+ session.getAttribute(」x「)+」「)。請注意,URL必須在jsp頁面的java標記<%= ....%>中定義。

回答

1

您不能在scriptlet中使用Javascript變量。我希望你知道,JSP在服務器端執行並在進行AJAX調用之前執行。你應該在你的代碼中做一些調整來實現這一點,在JS中構造URL。與此類似,

在JSP中,你可以有,

<input type='hidden' value='<%=dynamicallyCreatedURL%>' id='dynamicallyCreatedURL'/> 

閱讀Ajax響應回調上面的隱藏元素來構造URL。你可以在任何地方使用構造的url。在這裏,我用作形式動作

$(xml).find('Rowsets').each(function(){ 
    var x = $(this).find('Auto_Id').text() // Assign data from Auto_Id into variable 
    document.form.y.value = x; // Pass the parameter back to the JSP page 

    //Here construct the URL and set as forma action 
    var dynamicallyCreatedURL = document.getElementById('dynamicallyCreatedURL').value+'?param='+x; 
document.form.action = dynamicallyCreatedURL; 
} 
+0

嗨,我能夠在窗體中正確地看到我的值。但是,是否可以將該動態創建的表單值傳回到要在<%= =>之間使用的JSP頁面?我試過<%= session.getAttribute(「dynamicallyCreatedURL」)%>但沒有運氣。這甚至有可能嗎? – user1130511 2012-02-10 17:08:04

+0

你不能在JSP中使用'dynamicallyCreatedURL'。因爲JSP將在您的腳本執行之前執行。因爲JSP運行在服務器端,腳本運行在客戶端。爲什麼在JSP中需要這個變量? – 2012-02-11 17:14:32

+0

謝謝,因爲這是不可能的,我決定使用jquery/xslt來呈現我的數據。謝謝! – user1130511 2012-02-12 23:40:20