2013-02-25 93 views
0

我想参数添加到URL,对于我有2个文本框和一个按钮,我想不出我在哪里卡住,无法添加参数以URL
这里是我的代码:
无法添加参数,URL

HTML:

Param Name: <input id="tbAddParam" type="text" /><br> 
Param Value: <input id="tbAddParamValue" type="text" /><br> 
<input onclick="javascript:AddParamter();" value="Add" type="button" /> 

的JavaScript:

function AddParamter() { 
    var new_url = AddUrlParameter(window.location.href, document.getElementById('tbAddParam').value, document.getElementById('tbAddParamValue').value); 
    window.location.href = new_url; 
} 

function AddUrlParameter(a, b, c) { 
    if (b.trim() == "") { 
     alert("Parameter name should not be empty."); 
     return a; 
    } 
    if (c.trim() == "") { 
     alert("Parameter value should not be empty."); 
     return a; 
    } 
    if (a.indexOf("?") == -1) { 
     return a + "?" + b + "=" + c; 
    } 
    var d = a.split("?"); 
    if (d.length >= 2) { 
     if (d[1].trim() == "") { 
      return d[0] + "?" + b + "=" + c; 
     } 
     var e = d[1].split(/[&;]/g); 
     for (var f = 0; f < e.length; f++) { 
      var g = e[f]; var h = g.split("="); 
      if (h.length >= 2) { 
       if (h[0] == b) { 
        alert("Url Parameter with provided name already exists! Try Updating that Url Parameter."); 
        return a; 
       } 
      } 
     } 
     return a + "&" + b + "=" + c; 
    } 
} 
+0

哪些具体问题? – 2013-02-25 06:17:43

+0

你有什么错误(如果有的话)?这不起作用的方式? – Keppil 2013-02-25 06:17:53

+0

这是一个JavaScript问题,不解决Java,HTML或JSP问题= \ – 2013-02-25 06:18:24

回答

1

从以上评论:

我测试了你的代码并为我工作(如果页面以html,jsp或.something结尾)。这是使用Chrome v25进行测试的。

后来,我测试了IE9,并且在为本地执行的页面启用脚本执行后,它工作。当您进入IE时会弹出一条消息。在IE9中,它出现在底部,说Internet Explorer限制此网页运行脚本或ActiveX控件。,并在右侧有这个选项允许阻止的内容。

对于IE向后兼容性,似乎应该替换james emanon's answer中所述的d[1].trim()

作为建议,至少使用两个浏览器来测试您的网页。是的,我强烈建议在IE上进行测试,因为它会给你一个好的(?)反馈,以便对脚本错误非常敏感(它会产生很多Chrome和Firefox为你覆盖的错误)。

1

当在IE中运行这个(我在IE 10测试这一点),你需要允许BLO为了使JavaScript运行,需要添加内容。否则,JavaScript将不被允许运行。 Luiggi Mendoza对IE 9提出了相同的建议。

值得注意的是,在Chrome和FireFox中,没有任何允许JavaScript运行的用户确认,这项工作正常。

1

IE不喜欢“.trim()”。我使用IE8 compat模式在IE8中测试,并且由于修剪,您的代码无法工作。虽然我想IE9是好的(正如Luigi的确认所指出的那样)。

使用这样的事情,而不是:

strReplace=str.replace(/^\s+/,'').replace(/\s+$/,''); 

你可以得到它周围的东西,如:

function stripWhiteSpace(arg){ 
    if(arg.replace(/^\s+/,'').replace(/\s+$/,'') == ""){ 
     return true; 
    } 
} 

然后就打电话给它,并通过您的PARAM

if (stripWhiteSpace(b)) 
+0

thankx :)你也对我的回答有所贡献 – lata 2013-02-25 07:52:06

1

我支持@ rhughes的回答。但是,如果你在IE8中测试这段代码(我正在使用这个和你的代码不工作)和下面,HTML修剪()不会工作。正如你在三个地方修剪(),你必须使用以下内容。

if(typeof String.prototype.trim !== 'function') { 
    String.prototype.trim = function() { 
    return this.replace(/^\s+|\s+$/g, ''); 
    } 
} 

,或者你可以更伊斯利使用jQuery修剪()

$.trim() 

refer 1

refer 2