带有dojo工具包+ Spring Boot Controller的Ajax:使用curl进行测试,来自ajax json响应为空

问题描述

我正尝试测试通过xhrGet请求列表(在本例中为名称)的视图。我在Spring-Boot基本应用程序中使用Dojo Toolkit(webjars)。

波纹管方法返回卷曲:

 curl -i -X GET "http://localhost:8081/the-good-rest/ch3/xhrgame?game=2"
HTTP/1.1 202 
Transfer-Encoding: identity
Content-Type: application/json
Transfer-Encoding: chunked
Date: Sat,26 Sep 2020 20:35:25 GMT


   {"content":{"characters":["Sam","Sony","John","Sheila","Martha","Paul","Britney","Tom","Mark","Bruce"]}}
/*-----------------------------------------------------------------*/

此方法返回一个带有空列表的json对象:

/* This is the method in Controller */
        @RequestMapping(value="ch3/xhrgame",consumes= {MediaType.ALL_VALUE},produces= {MediaType.APPLICATION_JSON_VALUE})
            public ResponseEntity<Map<String,CharactersDto<String>>> dojoTraining4(@RequestParam(name="game") int level) {
                Map<String,CharactersDto<String>> model = new LinkedHashMap<String,CharactersDto<String>>();
                CharactersDto<String> characts = new CharactersDto<String>();
                DateFormat df = DateFormat.getDateInstance();
                if(level>1)
                characts.getCharacters().addAll(new ArrayList<String>(Arrays.asList("Sam","Martha")));
                if(level>=2)
                    characts.getCharacters().addAll(new ArrayList<String>(Arrays.asList("Paul","Bruce")));
                if(level>=3)
                    characts.getCharacters().addAll(new ArrayList<String>(Arrays.asList("Ann","Mary","Rose","James","Anthony")));
                
                model.put("content",characts);
                HttpHeaders headers = new HttpHeaders();
                headers.put("Content-Type",Arrays.asList("application/json"));
                headers.put("Transfer-Encoding",Arrays.asList("identity"));
                headers.put("Accept-Charset",Arrays.asList("utf-8));
                
ResponseEntity<Map<String,CharactersDto<String>>> entity = new  ResponseEntity <Map<String,CharactersDto<String>>>(model,headers,HttpStatus.ACCEPTED); 
                
                return entity;
                
        

}

代码道场: //不过何时从ajax调用:

功能(事件){

        var button = dojo.byId("idAdd");


        
        dojo.stopEvent(event);
        level = dojo.byId("idLevVal").innerHTML;

        var xhrArgs = {
                url:"/the-good-rest/ch3/xhrgame?game="+level,content: {"game":level},handleAs: "json",load: function(data){
                    var d = data.content;
                  if( d.characters.length>0){ 
 //d.characters.lenght is always 0!!!!!
                
                      for(i=0;i<d.characters.length;i++)
                        names.push( d.characters[i]);

                  }
                },error: function(error){
                    console.log(error);
                    dojo.byId("messages").innerHTML = "Names load failed";
                },handle: function(ioargs){
                    console.log("STATUS:" + ioargs);
                }
        };
        
        dojo.byId("messages").innerHTML= "Loading  names...";

        var deferred = dojo.xhrGet(xhrArgs);

    };

这是我解决问题的方法

  //So finally I'm using this implementation 
    @RequestMapping(value="ch3/xhrgame1",method=RequestMethod.GET,produces= {MediaType.APPLICATION_JSON_UTF8_VALUE})
        public ResponseEntity<String> dojoTraining7(@RequestParam(name="game") int level) {
            String body = "";
            if(level==1)
                body =  "{\"content\":{\"characters\":[\"Sam\",\"Sony\",\"John\",\"Sheila\",\"Martha\"]}}";
                if(level==2)
                body  = "{\"content\":{\"characters\":[\"Sam\",\"Martha\",\"Paul\",\"Britney\",\"Tom\",\"Mark\"]}}";
            if(level>=3)
                body  = "{\"content\":{\"characters\":[\"Sam\",\"Mark\",\"Bruce\",\"Ann\",\"Mary\",\"Rose\",\"James\",\"Anthony\",\"Priscila\",\"Ellise\",\"Kurt\",\"Daisy\",\"Jack\",\"Russell\"]}}";
            
            HttpHeaders headers = new HttpHeaders();
            headers.put("Content-Type",Arrays.asList(MediaType.APPLICATION_JSON_UTF8_VALUE));
            headers.put("Accept-Charset",Arrays.asList("UTF-8"));
        ResponseEntity<String> entity = new  ResponseEntity <String>(body,HttpStatus.OK); 
            
            return entity;
}
    

           

    

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...