jquery.ajax类型:发布奇怪的行为

时间:2013-12-24 07:44:07

标签: jquery ajax spring-mvc http-status-code-302 trailing-slash

更新开始

oooooops,我刚刚发现它不是一个获得&发布问题,但SpringMVC RequestMapping&尾随斜线& http 302问题。

当调用 /编辑 get-request时,302会返回,响应位置为 / editor /

/editor network

response detail

如果我将@RequestMapping("editor")的{​​{1}}更改为EditorController,那么一切正常。

enter image description here

所以问题是为什么@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

0 个答案:

没有答案