我正在使用$.post()
执行以下操作...
$.post('login',details);
我认为这个POST的数据是login
,但我发现的所有内容都是附加到url的详细信息,好像它正在对我正在进行的页面执行GET请求而不是POST给我的login
页面。为什么会这样?我的login
页面用于在用户登录请求完成后将用户重定向到新页面,理想情况下,我希望POST转到login
页面,以便可以重定向用户。 / p>
details
内容为{ username: "username", pasword: "password"}
,login
页面为使用泽西岛的login.java
页面。
答案 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()的经过验证的方法。