我有一个spring web应用程序,我使用Web服务加载UI数据。我使用的数据库是H2,我发布了一个示例服务,我使用它填充select
元素。以下是春季服务。
@RequestMapping(value = "/getAllOutlets", method = RequestMethod.GET)
public @ResponseBody ModelMap loadOutlets(){
List<Outlet> outlets = dataViewService.getAllOutlets();
ModelMap model = new ModelMap();
model.put("outlets", outlets);
return model;
}
此服务由以下来电使用。
function getOutlets(){
var element = $('#outlets select');
element.empty();
$.get('/getAllOutlets',function(response){
for(var i = 0; i < response.outlets.length; i++ ){
element.append("<option id="+ response.outlets[i].outletId + " >" + response.outlets[i].name + "</option>" );
}
});
}
当我运行Web应用程序时,数据被加载到UI而没有任何挂起。但是当我刷新页面时,数据不会加载到UI。我用firebug检查过,我可以看到所有的电话都在他们面前加载了图标。 (没有添加断点)。我注意到的另一件事是,只有需要数据库访问的服务才会在第二次调用中被挂起。例如,我有一个服务,它读取系统属性文件并发送值。当所有其他数据库所需的服务被挂起时,它不会被挂起。下面是firebug中调用的屏幕截图。 (希望你理解)
更新:
function populateUIMajorGroups(){
var uiElement = $('.item-group-button').first();
$.get('/getAllMajorGroups', function(data){
if(data.majorGroups.length != 0){
$('.panel_list').empty();
uiElement.empty();
}
for(var i = 0; i < data.majorGroups.length; i++){
var clone = uiElement.clone();
clone.append("<h3>" + data.majorGroups[i].description + "</h3>");
clone.attr("id", data.majorGroups[i].majorGroupId);
$('.panel_list').append(clone);
}
},'json');
}
上面的代码运行完美,没有任何挂起!正如您在屏幕截图中看到的那样!为什么这只发生在GET方法中?
答案 0 :(得分:0)
我认为您从json
获得了server
但未使用它,请将third parameter
json
添加为datatype
get function
$.ajax({url:'/getAllOutlets',dataType:'json',type:'GET',
success:function(response){
if(response.outlets && response.outlets.length)//check here that it is a json
{
for(var i = 0; i < response.outlets.length; i++ ){
element.append("<option id="+ response.outlets[i].outletId + " >" + response.outlets[i].name + "</option>" );
}
}
}//End success
});
{{1}} 1}}喜欢:
{{1}}