Тип jquery.ajax: пост странное поведение
начало обновления
oooooops, я только что обнаружил, что это не проблема получения и публикации, а проблема SpringMVC RequestMapping и косой черты и http 302.
когда вызывается запрос / редактор get, 302
возвращается, и местоположение ответа - / editor /,
но если я изменю @RequestMapping("editor")
из EditorController
в @RequestMapping("anyWords")
, то все работает нормально.
Вопрос в том, почему @RequestMapping("editor")
имеет проблему косой черты в то время как @RequestMapping("anyWords")
работает отлично.
конец обновления
Я просто пытаюсь вызвать простой запрос ajax-post, но меня смущает странное поведение.
Я утверждаю тип ajax: "post", но если я не дам URL-адресу суффикс "/", например "/editor" вместо "/editor /", результатом всегда будет запрос "get".
Обязательно ли добавлять суффикс '/' к запросу 'post'?
вот немного конф и код
SpringMVC Controller
@Controller
@RequestMapping("/editor")
public class EditorController {
@RequestMapping(method = RequestMethod.GET)
public ModelAndView getEditor() {
return new ModelAndView("/WEB-INF/editor.jsp");
}
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String saveEditor(Article article) {
// some code
return "something";
}
}
функция js для вызова ajax-запроса
MyShare.editor = {
checkAndSubmit : function(){
var title = $("#title").val();
var author = $("#author").val();
$.ajax({
url : "/editor/",
// problem here, without a '/' suffix,
// it will always call a get request.
// url : "/editor"
type : "POST",
data : {
'title' : title,
'author' : author
},
success : function(response){
// some code
},
error : function(response){
// some code
}
});
}
};
плагин для котов
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat6-maven-plugin</artifactId>
<version>2.0-beta-1</version>
<configuration>
<url>http://localhost:8080/manager/html</url>
<server>tomcat-local</server>
<path>/</path>
<contextReloadable>true</contextReloadable>
</configuration>
</plugin>
</plugins>
У меня нет 10 репутаций для публикации образа сети...:(когда я вызываю функцию js, она сначала вызывает запрос на публикацию, который имеет статус code302, а затем вызывает запрос на получение, который имеет статус code200, например, следующий текст
name method status type initiator
editor POST 302 Pending jquery-2.0.3.js:7845
editor/ GET 200 text/html http://localhost:8080/editor
Я только что создал еще один тестовый контроллер, и все работает отлично. Я имею в виду, что без суффикса '/' можно по-прежнему вызывать запрос ajax-post.
у кого-то есть чувство разницы между EditorController и TestController
@Controller
@RequestMapping("/test")
public class TestController {
@RequestMapping(method = RequestMethod.GET)
@ResponseBody
public String get(String title) {
return "get : " + title;
}
@RequestMapping(method = RequestMethod.POST)
@ResponseBody
public String post(String title) {
return "post" + title;
}
}