2010-11-05 48 views
0

我有一些網頁上,我有如下一段JavaScript代碼無法訪問表單元素時,有頁面調用查詢字符串

var inputs = $("body :input"); 
for(i=0;i<inputs.length;i++) 
{ 
    thisObj =inputs[i];// test if the class 'roll' exists 
    if (thisObj.getAttribute('type') == 'text') 
    { 
    params+=thisObj.id + "="+thisObj.value+"&"; 
    } 
} 

,如果它是從所謂的頁面沒有任何查詢字符串元素標記到URL(即localhost/default.aspx)它工作正常,並填充參數。

但是,如果它是從URL中包含querystring元素的頁面調用的(即localhost/default.aspx?ref = 42),則輸入將作爲空數組返回並且params爲空。

我知道,我可能已經錯過了一些非常明顯的,但對於我,我不能找出病因是什麼生活。

編輯:

更清晰,如果我的代碼簡化爲: -

var par=''; 
var inputs = $("body :input"); 
par ="c="+inputs.length; 

我得到C = 9如果URL沒有一個GET參數和一個空字符串,如果該URL有一個GET參數

+0

我怎麼看不到上面的代碼可以通過GET參數的影響。參數設置時,您的ASP頁面的行爲是否有所不同?這個表單是否存在於HTML源代碼中呢? – 2010-11-05 12:56:34

+0

GET參數不執行任何操作。我最初添加它以確保頁面在調試javascript代碼時真正刷新。這導致了上述錯誤。刪除GET參數並刷新頁面導致腳本運行正常,因此問題是可重現的。 – 2010-11-05 13:04:29

+0

稍微偏離主題,但你可知道,你也可以做到以下幾點:$(「體:輸入[類型=‘文本’]」) – Iain 2010-11-05 13:14:43

回答

0

該代碼似乎通過從頁面上的各種輸入字段收集數據來準備詢問字符串(變量params),最有可能的是隨後重定向到包含表單數據的動態生成的URL,形式爲GET參數秒。注意,jQuery選擇"body :input"有效地選擇可合理用於用戶輸入整個頁面中的所有元素(輸入,文本區域,選擇和按鈕,要準確)。

因此,代碼很可能意在頁面裏哪裏是assebled您參考查詢字符串,而不是該參數被讀取並投入使用的一個上使用。

+0

但是當查詢字符串存在時,jQuery選擇器無法返回任何值。如果我將代碼更改爲par =''; var \t inputs = $(「body:input」); par + =「c =」+ inputs.length +「&」;我得到C = 9如果URL沒有一個GET參數和一個空字符串,如果該URL有一個GET參數 – 2010-11-05 13:19:17

+0

你的JS看起來OK,我(雖然看起來複制/ jQuery的背景下粘貼,通過變量名評審)。我認爲我們需要看到完整的文檔(包括服務器端代碼)才能在這裏提供幫助。 – 2010-11-05 14:49:25