在項目的進行中,遇到了如題目所示的問題。select標簽如下:
//前臺的select標簽部分
//id="CLASS"是單選標簽
<select id="CLASS" name="CLASS" class="selectpicker show-tick form-control" style="width: 30%;" data-live-search="false">
<option value="1" selected="selected">甲</option>
<option value="2">乙</option>
<option value="3">丙</option>
<option value="4">丁</option>
</select>
//id="TYPE"是多選標簽
<select id="TYPE" name="TYPE" class="selectpicker show-tick form-control" style="width: 30%;" multiple data-live-search="false">
<option value="1">業務A</option>
<option value="2">業務B</option>
<option value="3">業務C</option>
<option value="4">業務D</option>
<option value="5">業務E</option>
</select>
//前臺的ajax部分(這里綁定了click事件,在點擊button按鈕的時候調用這個函數,向后臺傳值)
function CJ() {
var CLASS = $("#CLASS").val();
var TYPE = $("#TYPE").val().toString();//這里后面要進行解釋
$.ajax({
type: "POST",
async: false,
url: "CY.ashx",
contentType: "application/x-www-form-urlencoded; charset=UTF-8",
datatype: "json",
timeout: 1000,
cache: false,
data: { CLASS:CLASS,TYPE: TYPE},
success: function (result) {
}
})
}
剛開始的時候,CJ()函數中var TYPE = $("#TYPE").val().toString();部分我寫的是和單選框一樣的方法var TYPE = $("#TYPE").val(),在用jq獲取val()值的時候,多選框傳到后臺的一直是null,也就是獲取不到值,單選框卻可以。
CLASS.png
TYPE.png
后來上網搜了原因,總算找到了原因(原貼地址):
1.ajax的data里傳的值必須為字符串,比如{test:xx},xx必須是字符串類型。
2.當你傳的值比如上面的xx是一個數組是必須要,xx.toString()
3.當test值,為select多選的結果時:$('#selectid').val(),這個時候獲取的是一個數組,注意很重要的一點你在js里面alert打印一個數組Array對象是會顯示成字符串的,但是它實際是一個數組對象,你傳的時候必須要轉換為字符串。
按照他的方法進行修改改為代碼中的var TYPE = $("#TYPE").val().toString();,這時候就能正常傳值了。
TYPE-1.png