【问题标题】:Send parameters to another page将参数发送到另一个页面
【发布时间】:2012-11-23 06:13:41
【问题描述】:

我在将参数从一个页面发送到另一个页面时遇到了一个神秘的问题。

在其中一个 ExtJs 方法中,我通过 POST 将参数发送到另一个页面:

autoLoad : {  
url : url_servlet+'form.jsp',  
params: str,
scripts: true  
}

但我不知道如何在 JavaScript 中获取此参数。好吧,我说,并在 url 中发送参数:

 url : url_servlet+'form.jsp?ss=333'

在另一个页面中:

            function param(Name){
            var Params = location.search.substring(1).split("&");
            var variable = "";
            for (var i = 0; i < Params.length; i++){
                if(Params[i].split("=")[0] == Name){
                    if (Params[i].split("=").length > 1)
                        variable = Params[i].split("=")[1];
                return variable;
                }
            }
            return "";
        } 

        var s =param('ss');
        alert(s);

并看到空警报。

在萤火虫中我尝试:

window.location.search

并获取" "

怎么了?我读了几个例子,每个人都看到这样的代码。

【问题讨论】:

  • 如果location.search为空,显然param('ss')也会为空;因此,请在页面加载后查看浏览器位置栏。如果您看到ss=xyz,您的代码应该可以正常工作。
  • 在浏览器位置栏中我看到http://localhost:8080/web/guest/gis;jsessionid=01381E108A70601DEF59EC27C27B9F2E‌ 但不知道这是什么意思?

标签: javascript extjs url-parameters


【解决方案1】:

这里可能发生的是 ExtJS 将整个页面从远程位置加载到当前页面中。

发生这种情况时,由于加载而运行的代码将在当前页面中执行(可能根本没有ss=xyz 参数)。

但是,您的 form.jsp 应该可以访问查询字符串,并且可以将其注入到返回给 ExtJS 的页面中。

另一种选择是在页面加载后以某种方式从 JavaScript 传递该数据,但我对 ExtJS 的了解还不够,无法告诉您如何做到这一点。

【讨论】:

  • 所以我要使用这样的东西:First page--&gt;server--&gt;Second page?我可以将 Java 代码放入 form.jsp 通过 POST 从第一页获取参数并在 form.jsp 中以 JavaScript 发送吗?
  • @KliverMax ss 参数是 URL 的一部分,而不是 POST 数据;但是,是的,这将是我的建议。
  • 我无法在form.jsp 中执行此操作:String str=request.getParameter("ss");?
  • @KliverMax 是的,request.getParameter() 应该按预期工作;如果返回 null,则意味着根据 Java 文档它不存在。不幸的是,jsp 不是我的专业领域。
  • 是的。我尝试String str=request.getParameter("ss"); 并使用&lt;%=str%&gt; 在JS 中使用参数,它工作正常。
【解决方案2】:

你能试试下面的功能吗?

 function param(Name){
            var Params = location.search.substring(1).split("&");
            var variable = "";
            for (var i = 0; i < Params.length; i++){
                if(Params[i].split("=")[0] == Name){
                    variable = Params[i].split("=")[1];
                    return variable;
                }
            }
            if(variable=="") return variable;

        } 
    var s =param('ss');
    alert(s);

【讨论】:

  • @KliverMax,浏览器位置栏中的网址是什么?你确定你测试了修改后的功能吗?
  • 在浏览器位置栏中我看到http://localhost:8080/web/guest/gis;jsessionid=01381E108A70601DEF59EC27C27B9F2E
  • 如果这个url中没有参数“ss”,怎么获取呢?上述函数仅在 url 格式为 localhost:8080//web/guest/… 时有效
【解决方案3】:

您无法从 javascript 获取 POST 参数。 POST 参数发送到服务器,javascript 发送到客户端..

如果它是 GET,那么您可以使用 parseUri library

var value = uri.queryKey['param'];

【讨论】:

  • 好吧。用 url 发送怎么样?
  • -1。如果页面类似于form.jsp?ss=123,则参数ss 应该可以从查询参数中获得。
  • @Jack 这是一个 GET 请求而不是 POST
  • @sheldonCooper 你能举个例子吗?
  • @Jack 但我该怎么办?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2013-01-24
  • 1970-01-01
相关资源
最近更新 更多