JQuery.post()执行GET?

时间:2011-10-30 19:54:47

标签: javascript jquery jersey

我正在使用$.post()执行以下操作...

    $.post('login',details);

我认为这个POST的数据是login,但我发现的所有内容都是附加到url的详细信息,好像它正在对我正在进行的页面执行GET请求而不是POST给我的login页面。为什么会这样?我的login页面用于在用户登录请求完成后将用户重定向到新页面,理想情况下,我希望POST转到login页面,以便可以重定向用户。 / p>

details内容为{ username: "username", pasword: "password"}login页面为使用泽西岛的login.java页面。

4 个答案:

答案 0 :(得分:7)

POST到GET通常是由您使用错误的URL引起的。

我认为您的服务器端程序期望URL以/结尾并使用HTTP 301或302响应重定向到该地址;根据规范,这意味着必须发出GET而不是POST。

尝试使用“login /”;还要考虑您的代码应该可以从您网站上的任何网址调用;最好将网址锚定到服务器根目录,即“/ login /”!

答案 1 :(得分:1)

如果$ .post不起作用,请尝试使用$ .ajax函数:

    $('#target').click(function() {

    var formdata = $('#loginFrm').serialize(); // will produce { username: "username", pasword: "password"}
        $.ajax({type: "POST",
                        url: "urlto/tojavapage",
                        data: formdata ,
                        success: function(data) {
                            // div container to display error msg       
                            $('#loginmessage').html(data);
                        }
                    });

                    return false;


});`

确保您的提交按钮有一个点击事件,例如

<input type="button" value="login" id="target" /> <div id="loginmessage"> </div>

感谢

答案 2 :(得分:0)

如果您是从家用计算机上执行此操作,则可能是您的计算机上未安装PHP。这意味着浏览器将帖子视为普通服务器请求。另一种可能性是你的表格看起来像这样

<form name="xxx" method="post" action="login">
<!--Stuff-->
<input type="submit" value="xxx" />
</form>

这意味着表单将在未经jQuery筛选的情况下提交,浏览器将再次开始查找不存在的文档,并执行默认的GET请求。

或者...

POST的文件也不称为index.php或index.html,因此浏览器找不到任何内容,并再次默认为GET

答案 3 :(得分:0)

我唯一能想到的是,如果你在表单中收集'details',并使用表单提交按钮的onClick处理程序来调用ajax帖子, 然后可以在实际调用ajax之前提交表单。

你应该能够通过使用firebug或chrome js调试器在$ .post调用上设置一个断点来查看它,看它是否被击中。或者使用在其之前放置alert()的经过验证的方法。