更新开始
oooooops,我刚刚发现它不是一个获得&发布问题,但SpringMVC RequestMapping&尾随斜线& http 302问题。当调用 /编辑 get-request时,302
会返回,响应位置为 / editor / ,
但如果我将@RequestMapping("editor")
的{{1}}更改为EditorController
,那么一切正常。
所以问题是为什么@RequestMapping("anyWords")
在@RequestMapping("editor")
正常工作时会出现尾随斜杠问题。
更新结束
我只是想调用一个简单的ajax-post请求,但对这种奇怪的行为感到困惑。
我声称ajax类型:“post”,但是如果我没有给url一个'/'后缀,比如“/ editor”而不是“/ editor /”,那么结果将始终是一个“get”请求
是否必须在'post'请求中添加'/'后缀?
这里有一些conf和代码
SpringMVC控制器
@RequestMapping("anyWords")
js函数调用ajax请求
@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";
}
}
tomcat插件
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
}
});
}
};
我没有10个声誉来发布网络图像...... :( 当我调用js函数时,它首先调用具有code302状态的post请求,然后调用具有code200状态的get请求,如下文所示
<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>
我刚刚创建了另一个测试控制器,一切正常。我的意思是没有'/'后缀,仍然可以调用ajax-post请求。
任何人都对EditorController和TestController
之间存在差异感name method status type initiator
editor POST 302 Pending jquery-2.0.3.js:7845
editor/ GET 200 text/html http://localhost:8080/editor