在AJAX请求后,URL会自动附加$ _GET参数

时间:2014-02-08 10:04:43

标签: javascript php jquery jquery-mobile phptal

我有以下来源:

$('#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”)时,一切都是完成的。

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

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

有时它也有像

这样的锚
www.example.com/index.php#ui-state=dialog

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

1 个答案:

答案 0 :(得分:2)

好的,现在我们走了。

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

当使用上面的AJAX请求时,我使用了普通HTML表单中的数据。在打开HTML表单的表单标记中,我没有提供action-或method-attribute属性。就像

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

现在发生了什么?我按下了表单的提交按钮。 jQuery事件被触发了。但与此同时,正常的形式事件也被触发了。由于我没有设置任何动作或方法,因此会自动采用

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

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

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