2013-06-30 3 views
0

У меня проблемы с ajax, которые я не могу понять, и мне нужна помощь ... Я использую Spring для моего REST api, и мои вызовы ajax, похоже, не работают ... У меня есть поиск в форумах и не смогли найти ответ:Ajax, вызывающий java Rest API

Мой Java Spring API выглядит следующим образом:

@Controller 
@RequestMapping("api") 
public class RecentRestController { 

    RecentService recentService; 

    @Autowired 
    public void PersonRestController(RecentService recentService) { 
     this.recentService = recentService; 
    } 

    /** 
    * Add recent lake, then get recently viewed lakes and users ordered by timestamp 
    * @param handle 
    * @return 
    */ 
    @RequestMapping(value = "recent/weather/{auser}/{temp}/{windspeed}/{winddeg}/{laketag}", method = RequestMethod.GET) 
    @ResponseBody 
    public RecentlyViewedList getRecentlyViewedLakes(@PathVariable String auser, @PathVariable Integer temp, 
      @PathVariable Integer windspeed, @PathVariable Integer winddeg, @PathVariable String laketag) { 

     RecentlyViewedList rvl = recentService.getRecentlyViewedWeather(auser, temp, windspeed, winddeg, laketag); 
     return rvl; 
    } 

Когда я использую Ajax для вызова этой Java REST с помощью AJAX не кажется, Работа. Мой вызов ajax выглядит следующим образом: html/php:

new $Ajax.Request('http://localhost:8080/server/api/weahter/lake/' + agruments.auser + '/' + arguments.windspeed +'/' + arguments.winddeg + '/' + arguments.laketag, { 
     type : "GET", 
     //:url : recenturl, 
     //cache : false, 
     async : false, 
     crossDomain: true, 
     dataType : 'jsonp', 
     //data: arguments, 
     success : function(recent) { 


      alert("SUCESS"); 
      var i=0; 

      var lakecount = recent.lake.length; 
      var usercount = recent.user.length; 

      alert("lakecount:" + lakecount); 
      alert("usercount:" + usercount); 

     }, 
     error : function(XMLHttpRequest, textStatus, errorThrown) { 
      alert("An error has occurred making the request: " + errorThrown); 
     }, 
    }); 

Он никогда не работает. Он никогда не называет мой REST api правильным. Что я делаю неправильно?

Что-то не так с тем, как я называл мое REST сервис ..

Любая помощь очень ценится ..

Заранее спасибо.

ответ

0

Как вы проверяете для запроса @GET, наиболее очевидным, что нужно сделать, это попытаться ударить API непосредственно из браузера (введите в поле вашего URL

http://localhost:8080/server/api/weahter/lake/' + agruments.auser + '/' + arguments.windspeed +'/' + arguments.winddeg + '/' + arguments.laketag 

с параметрами разрешены).

Другая вещь, которую вы должны проверить, заключается в том, что ваш контекстный путь является «сервером», так как он указывает URL.

Также у вас есть и орфографическая ошибка в первом параметре URL: «agruments» вместо «аргументов»

+0

Да, исправлена ​​орфографическая ошибка, но если я не перекодирую URL-адрес, это не сработает. Когда я добавляю параметры с «/» между ними, он никогда не попадает в REST API. Я столкнулся. –

+0

Когда я пытаюсь нажать на него напрямую, он также не работает ... Это вопрос с цитатой? Я также пробовал POST с аргументами, и это не работает ... Если я жестко запрограммировал вызов, он работает найти ... Argh –

+0

http: // localhost: 8080/server/api/recent/lake/nightstalker/3/3/3/TXFORK, отлично работает, и я возвращаюсь: corrent JSON –

0

Да, запрос имеет недавний в нем. Что я не могу понять, так это то, что если я его построю вручную:

url : 'http://localhost:8080/server/api/recent/lake/nightstalker/3/3/3/TXFORK' 

это работает. Но когда я строю его с переменными, это не так.