AJAX只复制到url行

AJAX only copying to url line

本文关键字:url 复制 AJAX      更新时间:2023-09-26

我正在尝试创建一个登录系统。PHP不能用来发送数据到服务器,因为我需要在手机应用程序中运行它。似乎AJAX所做的只是在测试时更改浏览器窗口的URL,而没有向服务器发送任何内容。下面的代码。regformhash()只对密码进行散列。什么都没有。HTML:

<form action="#" id="registration_form">
        Username: <input type='text' name='username' id='username' /><br>
        Email: <input type="text" name="email" id="email" /><br>
        Password: <input type="password" name="password" id="password"/><br>
        Confirm password: <input type="password" name="confirmpwd" id="confirmpwd" /><br>
        <input type="button" value="Register" 
onclick="return regformhash(this.form,
                               this.form.username,
                               this.form.email,
                               this.form.password,
                               this.form.confirmpwd);" /> 
    </form>
    <p id="answerswer">Test</p>

脚本:

$('#registration_form').submit(function( event ) {
        event.preventDefault();
        var formData = $("#registration_form").serializeArray();
        $.ajax({
            url : 'register.php',
            type : "POST",
            data : formData,
            success: function(data) {
                alert("Yes" +data);// alert the data from the server
            },
            error: function() {
                alert("No" + data);
            }
        });
    });
PHP:

$username = $_POST['username'];
$email = $_POST['email'];
$password = $_POST['p'];
$skips = 5;
echo "succes";

将函数调用放在表单提交处理程序上…

<form action="#" id="registration_form" onsubmit="return regformhash(...);">
    Username: <input type='text' name='username' id='username' /><br>
    Email: <input type="text" name="email" id="email" /><br>
    Password: <input type="password" name="password" id="password"/><br>
    Confirm password: <input type="password" name="confirmpwd" id="confirmpwd" /><br>
    <input type="submit" value="Register" /> 
</form>
<p id="answerswer">Test</p>

这样,当函数返回false时,表单将中止提交。

另外,PHP在服务器端运行。Javascript是执行AJAX的东西。

HTML:

<form action="#" id="registration_form">
    Username: <input type='text' name='username' id='username' /><br>
    Email: <input type="text" name="email" id="email" /><br>
    Password: <input type="password" name="password" id="password"/><br>
    Confirm password: <input type="password" name="confirmpwd" id="confirmpwd" /><br>
    <input type="submit" value="Register" /> 
</form>
<p id="answerswer">Test</p>

SCRIPT:

$('#registration_form').submit(function( event ) {
    event.preventDefault();
    var formData = $("#registration_form").serializeArray();
    $.ajax({
        url: "register.php",
        type : "POST",
        data : formData,
        beforeSend: function( xhr ) {
            return regformhash($('#registration_form'),$('#username'),$('#email'),$('#password'),$('#confirmpwd'));
        }
    })
    .done(function( data ) {
        alert("Yes" +data);// alert the data from the server
    })
    .fail(function( jqXHR, textStatus ) {
        alert( "Request failed: " + textStatus );
    });
});

您使用的success:error:已弃用,请分别使用.done().fail()

将您的函数添加到regformhash() beforeSubmit!让我知道它是否适合你!!

它'将值复制到url'的原因是因为您将表单作为GET请求发送。您的提交覆盖不起作用,因此正在使用正常的提交,这意味着在url中使用带有参数的GET。

在PHP端,您只检查POST参数,因此它看起来像是一个初始请求而不是回发。

我怀疑你真的需要ajax在这里,只要删除ajax的东西,使用一个普通的提交按钮,并把表单方法POST。

作为旁注,您没有包含'regformhash'函数,但是从名称判断,您正在尝试对密码进行散列。在客户端进行散列是没有意义的。任何攻击者都可以看到您的散列方法。哈希需要在服务器上完成。密码通常以明文形式发送。