>我有以下来源:
$('#loginnow').click(function() {
var login_useroremail = $('input[name="login_useroremail"]').val();
var login_password = $('input[name="login_password"]').val();
$.ajax({
type: "POST",
url: "http://www.example.com/login.php",
data: {
login_useroremail: login_useroremail,
login_password: login_password
},
dataType: 'text',
success: function(data) {
if(data == 'ok')
{
alert('Registration successful!');
}
else
{
alert('Registration failed. Try again later.');
}
},
error: function(data) {
alert('Registration failed. Try again later.');
}
});
});
我知道这些警报和条件很糟糕,但由于我处于早期项目状态,我稍后会对其进行优化。 ;)我正在使用jQuery,jQuery Mobile和PHPTAL。
当我调用示例并且登录确实成功时(=服务器返回"ok"),一切都是finde。
我的问题:为什么当我调用示例并且登录不成功时,在我的 URL 栏中会自动附加参数?调用后,它看起来像:
www.example.com/index.php?user=blah&pw=yadda&...
有时它还有一个锚点,例如
www.example.com/index.php#ui-state=dialog
至少我可以想象这是为了什么,我认为这有助于记住您当前在移动应用程序中正在做什么。
好的,现在我们开始了。
我发现了发生了什么,这有点棘手。
当使用上面的 AJAX 请求时,我使用了来自普通 HTML 表单的数据。在打开 HTML 表单的表单标记中,我没有提供操作或方法属性。就像
<form name="bla">
...
</form>
现在发生了什么?我按下了表单的提交按钮。jQuery-event被触发了。但与此同时,正常形式事件也被触发了。由于我没有设置任何操作或方法,它会自动假设
<form name="bla" method="get">
...
</form>
这就是结束我的原因,因为 GET 参数当然出现在之后的 URL 中。 :)
我现在在jquery脚本中使用.preventDefault()来避免通过AJAX以外的任何其他方式提交正常表单。