簡體   English   中英

從jquery獲取多個選擇參數值的問題,javascript返回到perl cgi頁面

[英]issues with getting multiple select param values from jquery, javascript back to perl cgi page

我已經為此工作了1個小時,沒有運氣。 任何幫助,將不勝感激。

我有一個cgi腳本,用於創建以下選擇參數值:

print "Please select a dkversion to compare : <br><br>";
print "<select name='dkversion' id='dkversion' size='6' multiple='multiple'>";
foreach my $values ('ASDF123GS v0.01 models eval QA <-> apple', 'ZXCV534GS v1.01 models eval QA <-> pineapple')
{
    print "<option value=\"" . $values . "\" >" . $values  . "</option>";
}
print "</select>";
print "</form>";

我還有另一個使用jquery / javascript處理輸入的html頁面:

     var scalarstr = "";
     $("#dkversion :selected").each(function () {
        scalarstr += "dkselected=" + encodeURIComponent($(this).val()) + "&";
     });

     $.get("./scripts/modelQA_correlation.cgi?" +  scalarstr + "&menu_mode=2",function(data){ 
     });

回到cgi頁面以處理多個選擇,我對輸入進行了轉儲,發現它沒有分隔值:

$VAR1 = { 'dkselected' => 'ASDF123GS v0.01 models eval QA <-> apple�ZXCV534GS v1.01 models eval QA <-> pineapple', 'menu_mode' => '2' }; 

為什么dkselected值不分成兩個部分?

這里一種更安全的方法是讓jQuery對字符串進行編碼,讓我們從<select>獲取值,通過.serializeArray()將它們存儲在數組中,然后向其添加menu_mode ,如下所示:

var params = $("#dkversion").serializeArray()​;
params.push({ name: 'menu_mode', value: '2' });
$.get("./scripts/modelQA_correlation.cgi", params, function(data){ });​

您可以在這里進行測試 這可以完成您上面的代碼所做的所有事情,但是我希望您會同意更簡單,更容易維護。 這通過將對象作為$.get() data選項傳遞而起作用,該對象在內部調用$.param()以獲取最終字符串,因此您可以像演示中一樣親自測試/查看結果。

如果您正在執行類似$args = CGI::Vars ,那么您將在CGI.pm處理多個值的過程中犯規。 您需要將字符串拆分為"\\0" (空)。

另一種方法是使用param方法: @vals = $q->param('dkversion');

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM