Javascript 仅复制到url行的AJAX

Javascript 仅复制到url行的AJAX,javascript,php,jquery,html,ajax,Javascript,Php,Jquery,Html,Ajax,我正在尝试建立一个登录系统。PHP不能用来向服务器发送数据,因为我需要在手机应用程序中运行它。似乎AJAX所做的只是在测试时更改浏览器窗口的URL,而没有任何内容发送到服务器。代码如下。regformhash只对密码进行哈希运算。没有别的了。 HTML: PHP: 将函数调用放在表单提交处理程序上 <form action="#" id="registration_form" onsubmit="return regformhash(...);"> Username: <

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

PHP:


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

<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="answer">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="answer">Test</p>
您使用了不推荐使用的success:和error:,分别使用.done和.fail


在提交之前将您的函数添加到regformhash!让我知道它是否对你有用

它“将值复制到url”的原因是您将表单作为GET请求发送。您的提交覆盖无效,因此正在使用普通提交,这意味着使用url中的参数获取

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

我怀疑您是否真的需要ajax,只需删除ajax内容,使用普通的提交按钮,然后将表单方法放到POST上即可


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

PHP不能用于向服务器发送数据,因为我需要在电话应用程序中运行它。PHP不依赖于客户端!您已将输入类型保留为按钮,因此,单击它时不应提交您的表单!!您已经为编写了脚本。提交表单!!单击按钮时所使用的函数应该位于表单的onsubmit上。在提交时将false返回表单将在函数失败时停止表单提交。输入类型应为“提交”而不是“按钮”。。否则.submit将不会被激发..这样它甚至不会运行regformhash函数。现在它只需将注册表单的内容复制到url行,而无需散列密码:……index.html?username=Test&email=test@example.com&password=Lol123&confirmpwd=Lol123是的。我只是复制了OP的代码,没有想到要更改按钮以提交。单击Register时没有发生任何事情。什么都没有。您是否将注册按钮类型更改为提交?是的。我试着复制你在这里写的东西。对不起,我在php/ajax领域不是很有经验。
$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="answer">Test</p>
<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="answer">Test</p>
$('#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 );
    });
});