JQuery $ .getJSON не работает в Spring MVC - PullRequest
1 голос
/ 08 марта 2012

Я пытаюсь сделать ajax-вызов, используя jquery, в моем весеннем приложении на основе MVC.

Ниже мой контроллер ajax

@Controller
@RequestMapping("/ajax/*")
public class AjaxController extends BaseController {

    private static Logger log = Logger.getLogger(AjaxController.class);

    @Autowired
    private ICountryService countryService;

    @RequestMapping(value = "/findCountriesByRegionId", method = RequestMethod.GET)
    public @ResponseBody
    List<Country> findCountriesByRegionId(
            @RequestParam(value = "regionId") int regionId) {
        log.info("finding countries by region id [" + regionId + "]");
        List<Country> countryList = countryService.findByRegionId(regionId);
        return countryList;
    }

и ниже мой код JavaScript

    function populateCountriesByRegionId(regionId) {
    alert("11");
    $.getJSON("ajax/findCountriesByRegionId", {
        regionId : regionId
    }, function(countryList) {
        alert("2");
        $("#countryId").empty();
        // $("#countryId").html("");
        var options = $("#countryId");
        options.append($("<option />").val('0').text(""));
        $.each(countryList, function() {
            options.append($("<option />").val(this.countryId).text(
                    this.countryName));
        });
    });
}

Но мой метод контроллера вообще не вызывается.

Когда я нахожусь на странице с URL-адресом вроде http://localhost/myApp/emp/new и мой URL-адрес ajax похож на ajax / findCountriesByRegionId, он выдает мне сообщение об ошибке, указывающее, что отображение URL-адреса myapp / emp / ajax / findCountriesByRegionId отсутствует

Почему он проверяет URL myapp / emp / ajax / findCountriesByRegionId. Это должен быть myapp / ajax / findCountriesByRegionId

Когда я подаю в суд на URL вроде / ajax / findCountriesByRegionId (добавлено / в начале), ничего не происходит. Нет ошибок вообще. Контроллер не вызван.

Я хотел поместить все мои ajax-методы в один контроллер и вызывать их при выполнении другого контроллера, например, emp в этом случае.

Пожалуйста, помогите.

1 Ответ

2 голосов
/ 08 марта 2012
  • сначала не используйте относительный URL на своей странице.$.getJSON("/myApp/ajax/findCountriesByRegionId",
  • секунда не имеет / * в конце вашего отображения на уровне класса для вашего контроллера.Сделайте это просто /ajax.
  • В-третьих, убедитесь, что вы можете вызвать контроллер по заданному пути URL-адреса, прежде чем пытаться использовать его с помощью jquery, и убедитесь, что json выглядит так, как вы ожидаете.Укажите хром на http://localhost/myApp/ajax/findCountriesByRegionId?regionId=1
...