将参数从AJAX传递到JSP页面

时间:2012-02-10 06:18:16

标签: ajax jsp parameter-passing session-variables

我正在尝试将一个参数从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文件:

<FORM name="form"><input name="y" value="" /></FORM> //value left blank for AJAX to auto-populate

以上代码有效 - 我可以获取参数x。但是,是否可以在同一.JSP页面上将x的值转换为以下格式?

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

或者,获取x的值并将其传递给java标签&lt;%=%&gt;?

这样做的目的是在页面加载时从XML(通过AJAX)获取参数,将参数传递回我的JSP页面,以便我可以使用它动态创建URL(例如“http:// xyz&amp; ; Param =“+ session.getAttribute(”x“)+”“)。请注意,必须在java标记中定义URL&lt;%= ....%&gt; jsp页面。

1 个答案:

答案 0 :(得分:1)

您不能在scriptlet中使用Javascript变量。我希望你知道,JSP在服务器端执行并在进行AJAX调用之前执行。您应该在代码中进行一些调整以实现此目的,在JS中构造URL。像这样,

在JSP中,你可以拥有,

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

阅读Ajax Response回调中的上述隐藏元素以构造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;
}