使用spring mvc环境中的查询使用ajax调用的结果填充列表框选项。
目前我正在进行我的第一个jquery / ajax调用,我遇到了如何将服务器端结果填充到我的列表框中的问题。 弹簧控制器正确地返回数据(希望如此)我只是在填充列表框时遇到了jquery部分的问题。
这是我的ajax电话
$(function() { $projectKey = $('#projectKey'); $projectKey.change ( function() { $.ajax({ type: "GET", url: "getVersionsByProjectKey", data: {"projectKey": $projectKey.val() }, dataType: 'json', success: function(data){ alert('success'); alert(data); $('#jiraVersion').append( $('').html(data) ); } }); } ); });
这就是我的控制器的样子:
@RequestMapping(value="/getVersionsByProjectKey", method = RequestMethod.GET) public @ResponseBody List getVersionsByProjectKey(@RequestParam(value = "projectKey") String projectKey) { List versions = new ArrayList(); versions.add("Chuck"); versions.add("Norris"); versions.add("John"); versions.add("Doe"); return versions; }
这是我要填充数据的列表框:
正如我之前所说,我现在只是熟悉jquery并尝试了谷歌的几个解决方案但没有快乐。 我试过了:
success: function(data){ alert('success'); alert(data); $.each(data, function(index, item) { $("#jiraVersion").get(0).options[$("#jiraVersion").get(0).options.length] = new Option(item.Display, item.Value); });}
等等
警报(’成功’)写道: Chuck,Norris,John,Doe
。
如果我直接发送请求/getVersionsByProjectKey?projectKey=AIL
我回来了["Chuck","Norris","John","Doe"]
我还试图修改success
:
success: function(data){ alert('success'); alert(data); $('#jiraVersion').append( $('').html(data) ); }
然后我的列表框只包含一个选项,即ChuckNorrisJohnDoe 。 知道我做错了什么吗?
由于来自Ajax调用的data
是数组["Chuck","Norris","John","Doe"]
,您需要使用jQuery.each()
迭代它:
使用此functionsuccess
:
success: function(data){ $.each(data, function(index, value) { $('#jiraVersion').append($('
这将追加/生成:
由于您返回的数据是一个数组,您必须遍历它以为每个选项分配每个值。因此,在您的成功回拨尝试类似于:
success: function(data){ alert('success'); alert(data); var dataLen = data.length; for (i=0; i' + data[i] + ''); } }