如何使用JavaScript在后台运行PHP

如何使用JavaScript在后台运行PHP,php,javascript,mysql,html,forms,Php,Javascript,Mysql,Html,Forms,我试图向数据库提交一个php表单,但我希望当我单击submit按钮时,页面会自动刷新(无需转到我提交的php页面)。我知道我必须使用JS来实现这一点,我已经尝试了很多不同的方法,但都没有成功。我使用了三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是php和JS新手,欢迎任何帮助,谢谢 PD以下是我目前掌握的代码: user.php <head> ........ <!-- Javasc

我试图向数据库提交一个php表单,但我希望当我单击submit按钮时,页面会自动刷新(无需转到我提交的php页面)。我知道我必须使用JS来实现这一点,我已经尝试了很多不同的方法,但都没有成功。我使用了三个文件,一个用于表单,一个用于JS,最后一个用于将数据发布到数据库中。我是php和JS新手,欢迎任何帮助,谢谢

PD以下是我目前掌握的代码:

user.php

  <head>
    ........

    <!--                       Javascripts                       -->

    <!-- jQuery -->
    <script type="text/javascript" src="resources/scripts/jquery-1.3.2.min.js"></script>



    <script type="text/javascript" src="resources/scripts/newuser.form_jquery.js"></script>

    </head>

    <body>
      ...................................
          ......................................
                   ......................................

            <form action="" id="newuserform" method="post">
                <h4>New user</h4>
                <br /><br />

                <fieldset class="column-left">                  
                    <p>
                        <label>Email</label>
                        <input class="text-input medium-input" type="text" id="email" name="email" />

                        <br />
                    </p>

                    <p>
                        <label>First name</label>
                        <input class="text-input medium-input" type="text" id="fname" name="fname" />

                        <br />
                    </p>                    
                </fieldset>

                <fieldset class="column-right">
                    <p>
                        <label>Password</label>
                        <input class="text-input medium-input" type="password" id="pwd" name="pwd" />

                        <br />
                    </p>

                    <p>
                        <label>Last Name</label>
                        <input class="text-input medium-input" type="text" id="lname" name="lname" />

                        <br />
                    </p>
                </fieldset>             
                    <p>
                        <input class="button" type="button" value="Create" id = "submit_btn"/>
                    </p>
                <div id="errormsg" class="notification error png_bg">
                    <div>
                        Invalid login, please check your username and password!
                    </div>
                </div>
            </form>
                 </body>
post.newuser.php*

    public function newuser($e, $p, $f, $l)
{
    //e: email, p: password, f: first_name, l: last_name

    $return = false;

    $sql = "INSERT INTO users (email, password, first_name, last_name, role, enabled)";
    $sql .= " VALUES (";
    $sql .= "'".$e."', ";
    $sql .= "'".SHA1($p)."', ";
    $sql .= "'".$f."', ";
    $sql .= "'".$l."', ";
    $sql .= "'2', ";
    $sql .= "'1' ";
    $sql .= ")";

    $mysql = new mysql();
    $mysql->connect();
    $q = $mysql->queryin($sql);

    if ($q)
    {
        $return = true;
    } 

    $mysql->end(); 

    return $return;

}

很抱歉写了这么长的文章。

如果您想将信息发送到数据库并重新加载页面,则不需要JavaScript。只需在PHP文档中添加一条if语句,查看是否设置了$\u POST[],并确保通过的action属性将数据提交到当前页面。

试试ajax //在php中,做您想做的事情,并以json_decode($yourvariable)的形式返回您的值 //json_解码所做的就是将输出转换为数组格式。以便下面的函数可以读取它

$.get("ajax.php", { id: hash }, //equivalent to ajax.php?id=hash

function(out)
{

}, "json");
查看我是如何在我的网站上使用此功能的:
(查看源代码并滚动到底部)

当您想在后台执行某些操作时,必须使用AJAX,这样JavaScript中的XMLHttpRequest对象将为您提供更好的服务。您必须重新构建已经使用AJAX的内容。这很简单。
去看看那里有什么。您需要大约10分钟才能理解。

页面刷新回自身的原因是您没有停止浏览器提交表单的默认行为。以下是我的建议

$("#newuserform").submit(function(event) {
// handle processing

// stop the form from submitting since you used Ajax to submit
 event.preventDefault(); 
});

我认为把JS代码绑定到提交方法而不是点击,这是更好的编码实践。


此外,虽然对保存的密码进行哈希运算是件好事,但您可以完全接受。mysql\u real\u escape\u string()是您的朋友。:)

嗯?为什么你会推荐md5()而不是sha1()?这是一个长期的争论。我不想谈细节。但在对密码进行哈希运算之前,您绝对应该先对其进行加密。我可以带你去好的维基百科吗?MD5是比SHA-1更弱的加密算法。这只是一个事实,没有什么值得争论的。它们都坏了,没有盐也没用。我很好奇为什么你会推荐一个较弱的算法,而不是
bcrypt
或其他什么。我猜我是盲目地接受了别人告诉我的。有人告诉我md5()比sha1()好。通过快速的谷歌搜索,我发现我错了。哈哈。谢谢你让我意识到这一点。:)编辑。
$("#newuserform").submit(function(event) {
// handle processing

// stop the form from submitting since you used Ajax to submit
 event.preventDefault(); 
});