我有一张桌子(使用dataTables插件)。有一列在每行中都有一个下拉列表select
,其中包含多个options
。在另一个单元格中,有一个submit
按钮(每行)。它由单元格中的<a href />
标记表示,但实际提交是通过使用POST而不是href的默认GET的AJAX调用进行的。
当我点击该行的提交按钮时,我试图在下拉列表中检索所选项目的值。但是,在我的java控制台中,它只返回[object Object]。
值得注意的是,我正在尝试解决每个选择下拉列表具有相同ID的事实。
以下是下拉选择行的代码:
<form:select path="adminReviewsLetterStatus.id" id="statusID"><form:option value="">' + full.statusDescriptionState + '</form:option>
<form:options items="${statusList}" itemLabel="statusDescription" itemValue="id"/></form:select>
然后,我试图使用以下javascript获取该下拉列表的值:
var dropDownValue = $(this).prev($("#statusID").find('option:selected').val());
(提交按钮位于单元格后面的单元格中,下拉选择)。
对于提交按钮,我使用以下内容:
<a href="addLetterToRev.htm?letRevTypYrID=' + full.reviewTypeID + '&letterId=' + full.id + '&statusIdParameter=' + dropDownValue + '" title="Add">Add</a>
(其中statusIdParameter
是我在控制器中获取的参数。)
当我打印到我的java控制台时,我得到letRevTypYrID
和letterId
参数的预期值,但我的statusIdParameter
参数返回[object Object]
。
我觉得我很接近让这件事情发挥作用,所以非常感谢任何建议。
AJAX调用非常简单:
$.ajax({
url: $(this).attr('href'),
method: 'POST'
});
return false;
答案 0 :(得分:0)
问题在于这一行:
var dropDownValue = $(this).prev($("#statusID").find('option:selected').val());
$.prev()
会返回一个DOM元素,即您获得的object
。正如你所看到的那样,var变得充满了来自$.prev()
的所有内容。
而是这样做:
var dropDownValue = $(this).prev(),find("#statusID").val();
$.prev()
应根据您的问题获取包含下拉列表的单元格。查找将获得下拉列表,然后$.val()
适用于select
元素,该元素已填充所选选项(因此请勿在{{1}}元素上使用$.val()
此外,您应该在ajax语句中填写网址,而不是使用option
中的href
属性,当您回顾代码时,它会以这种方式给您造成混淆(甚至虽然它工作正常)。