作者kucal (静...)
看板Ajax
标题[问题] js form.submit 与 $.post 的执行
时间Fri May 4 20:49:14 2012
小弟初学JS 遇到了一些小问题 想向板上的前辈们请教
我有一个HTML 里面有一个表单 程式如下
<form name="loginform" action="/login" method="post">
Account:<input name='id' id='id' value="" type='text'/>
Password:<input name='pwd' id='pwd' value="" type='password'/>
<input type="button" value="login" onClick="check()"/>
</form>
如果我使用 form.submit()的方式将表单内容送出时 则可以重导至另一网页
但是如果我用 $.post() 的方式 将值传给server後 却无法重导到另一网页
--------------------- client code by html+js -----------------------
function check()
{
if(loginform.id.value == "")
{
//检查输入内容 (略)
}
else
{
// 内容输入合法的话
formsubmit();
}
}
function formsubmit() {
$.post( "login",
{ // 从表单中取値送出
id: loginform.id.value,
pwd: loginform.pwd.value,
},
function (data) {
// 如果server将帐密判断合法 server会导至登入後页面 若非 则传回 fail
if( data == 'failed') {
alert('登入失败');
loginform.reset();
}
});
}
--------------------------- server code by nodejs ------------------
app.post('/login', function (req, res) {
// 从post中抓资料出来
var id = req.body.id;
var pwd = req.body.pwd;
// 资料库连线初始化
var client = mysql.createClient({
// (略)
});
// 去资料库中查询使用者帐密是否一致
client.query(
"my sql query",
function selectCb(err, results, fields) {
if (err) {
throw err;
} else {
if (results[0] == null || results[0] == undefined) {
console.log('查无帐号: ' + id);
res.send('failed'); // 传回failed字串给client
} else {
if (results[0].pwd == pwd) {
console.log('登入成功: ' + id);
// 导到登入後页面
res.redirect('/loginafterpage.html');
} else {
console.log('登入失败 帐号' + id + " 密码错误")
res.send('failed');
}
}
}
client.end();
}
);
});
请问 form.submit()行得通 可以跳到新页面 而$.post却无法转跳 问题出在哪
有可行的变通方案吗 麻烦各位大大了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.22.18.32
1F:→ CaptainH:$.post() is "ajax" , 当然不会换页 05/04 20:51
2F:→ kucal:原来如此... 那有办法让他变得像form post 一样可换页吗 @@? 05/04 20:53
3F:→ kucal:因为我的redirect写在server那边 0.0" 05/04 21:38
4F:→ bibo9901:$('....').submit(); 05/04 23:02
5F:→ kucal:楼上的方法有试过 但是似乎只能在送出之前做判断 再送出 可 05/05 00:29
6F:→ kucal:是我的判断放在server端 也就是要先送出 再回传值 @@" 05/05 00:30
7F:→ chrisQQ:变通方法… post success 加上 location.href = "newurl"; 05/05 00:45
8F:→ chrisQQ:这样不行嘛?直接在前端收到资料後用 js 跳页就好了@@? 05/05 00:46
9F:→ kucal:目前是用楼上的方法处理 如果是在server端那边就直接转跳呢 05/05 00:48
10F:→ chrisQQ:server 跳转就只能用 header 但如果你已经有输出的话就 05/05 01:30
11F:→ chrisQQ:没办法@@ 05/05 01:30
12F:→ alpe:不是不行, 但很怪. 05/05 23:26
13F:→ alpe:跳转之後html还是可以收到.. 用html去判断, 够虾吧 05/05 23:26
14F:推 GERRYccc:chrisQQ的方法 $.post当验证 success 後再 form.submit() 05/06 00:52
15F:→ kucal:楼上方法小弟也有试过 缺点是会login两次 XD 05/06 10:53
16F:推 superpai:看不懂为什麽不用.submit() 05/06 11:09
17F:推 carlcarl:觉得ChrisQQ的方法就好了 在哪边跳转会有差吗@@? 05/06 22:32