3

我有以下来源:

$('#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。

当我调用示例并且登录确实成功(=server 返回“ok”)时,一切都找到了。

我的问题:为什么当我调用示例并且登录不成功时,在我的 URL 栏中会自动附加参数?调用后它看起来像:

www.example.com/index.php?user=blah&pw=yadda&...

有时它也有一个锚

www.example.com/index.php#ui-state=dialog

至少我可以想象这是为了什么,我认为这有助于记住您当前在移动应用程序中所做的事情。

4

1 回答 1

2

好的,现在我们开始。

我发现了发生了什么,这有点棘手。

当使用上面的 AJAX 请求时,我使用了来自普通 HTML-Form 的数据。在打开 HTML 表单的表单标签中,我没有提供动作或方法属性。就像

<form name="bla">
...
</form>

现在发生了什么?我按下了表单的提交按钮。jQuery 事件被触发。但与此同时,普通表单事件也被触发了。由于我没有设置任何动作或方法,它自动假设

<form name="bla" method="get">
...
</form>

这就是我结束的原因,因为 GET 参数当然出现在 URL 中。:)

我现在在 jquery 脚本中使用 .preventDefault() 来避免通过 AJAX 以外的任何其他方式提交普通表单。

于 2014-02-08T10:43:14.130 回答