如何在JavaScript中处理Querystring?

时间:2010-06-02 08:28:18

标签: javascript

我有一个js代码:

    window.onload = function() {
        document.getElementById("Button1").onclick = function() {
            var t1 = document.getElementById("Text1").value;
            var t2 = document.getElementById("Text2").value;

            document.URL = 'myurl?t1=' + t1 + '&t2' + t2;
         }
    }

这里我添加t1,t2作为查询参数..现在我的问题是让我说我​​已经在Textbox1中输入了一些数据而不是在textbox2中输入,在这种情况下我得到的网址是 'myurl?t1=' + value of textbox1 + '&t2' + This will be blank; 我想让它变得动态,即如果Textbox2中没有值,那么我不想附加queryparam t2,同样适用于t1也可以。可能吗?

4 个答案:

答案 0 :(得分:2)

使用if条款。

var url = "";
if (t1)
    url += "&t1=" + encodeURIComponent(t1);
if (t2)
    url += "&t2=" + encodeURIComponent(t2);
document.URL = "myurl" + url.replace(/^&/, "?");

甚至更好,根本不使用JavaScript 。只需使用action="get"的表单即可。这正是他们的目的。

答案 1 :(得分:0)

document.URL = 'myurl?t1=' + t1 + (''!=t2 ? '&t2' + t2 : '');

简单地说,使用(?true:false)逻辑结构来测试var t2是否为空。如果它不是空的,请添加到document.URL '&t2'+t2,否则不传递任何内容。

答案 2 :(得分:0)

document.URL ='myurl?t1 ='+ t1 +(t2?'& t2'+ t2:'');

答案 3 :(得分:0)

我个人使用此功能来创建查询:

function CreateQuery(URL, D) {
    // Returns a URL in format "URL?Key1=Value1&Key2=Value2"
    var L = [];
    for (var k in D) {
        if (!D.hasOwnProperty(k)) continue;
        var eK = encodeURIComponent(k);
        var eV = encodeURIComponent(D[Key]);
        L.push(eK+'='+eV);
    }
    if (L.length)
        return URL+'?'+L.join('&');
    return URL;
}

要使用它,你可能会去:例如:

var q = {};
if (t1) q['t1'] = t1;
if (t2) q['t2'] = t2;
window.location = CreateQuery('myurl', a);

(或者使用<form>,这可能是另一个用户建议的更好选择: - )