[英]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.