2010-06-02 28 views
0

我有一個JS代碼:如何在JavaScript中處理查詢字符串?

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作爲查詢param..now我的問題是可以說,我已經進入Textbox1的一些數據,但不能在TextBox2中,在這種情況下,URL我越來越是 'myurl?t1=' + value of textbox1 + '&t2' + This will be blank; 我想使它動態,即如果Textbox2中沒有值,那麼我不想追加queryparam t2,同樣也爲t1也..可能嗎?

+0

如果其中一個值爲空,則不會中斷網址。並將document.URL改爲window.location或瀏覽器將不會打開該頁面(FF) – baloo 2010-06-02 08:31:30

+0

yep.but僅僅是一個例子,而不是真正的應用程序。 – Wondering 2010-06-02 10:33:15

回答

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

只需使用(?true:false)邏輯構造來測試var t2是否爲空。如果不是空的,則添加到document.URL '&t2'+t2,否則不傳遞任何內容。

+0

你可以解釋這一點 – Wondering 2010-06-02 08:42:42

2

使用if條款。

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

甚至更​​好,完全不使用JavaScript。只需使用action="get"。這正是他們想要的。

+0

'escapeURIComponent'應該是'encodeURIComponent' – Tomas 2012-05-22 14:20:53

+0

@Tomas:固定。順便說一下,你有足夠的聲望來編輯其他人的帖子,所以你可以繼續,如果你想自己修正這些。 – 2012-05-22 16:44:16

+0

謝謝!我沒有意識到這一點;會做.. – Tomas 2012-07-06 08:01:48

0

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

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>,這可能仍是更好的選擇另一位用戶建議:-)