服务调用在第二页刷新时挂起

时间:2013-05-06 04:42:52

标签: javascript jquery spring spring-mvc h2

我有一个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中调用的屏幕截图。 (希望你理解)

enter image description here

更新:

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方法中?

1 个答案:

答案 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}}

文档http://api.jquery.com/jQuery.ajax/