如何使用JavaScript在后台运行PHP

时间:2011-03-10 06:18:10

标签: php javascript mysql html forms

我正在尝试向数据库提交一个php表单,但我希望当我点击提交按钮时页面会刷新(无需转到我提交的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>

newuser.form_jquery.js

   $(document).ready(function() {
    $("#errormsg").hide();
     $("#newuserform").keypress(function(e){
    if(e.which == 13){
        $("#errormsg").hide();
        jQuery('#submit_btn').focus().click();
        e.preventDefault();
        return false;
    }
});


$("#submit_butn").click( function() {


    var e = '#email';
    var p = '#pwd';
    var f = '#fname';
    var l = '#lname';

    var _e = $(e).val();
    var _p = $(p).val();
    var _f = $(f).val();
    var _l = $(l).val();


    var postFile = 'application/post.newuser.php';
    var dataurl = 'users';

    $.post(postFile, { e: _e, p: _p, f: _f, l: _l}, function(data) {
        if(data.status==true){
            window.location=dataurl;
        } else {

            $("#errormsg").show();

        }
    }

    ,'json');

});

    });

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;

}

很抱歉这篇长篇文章。

4 个答案:

答案 0 :(得分:1)

当你想在后台做某事时,你必须使用AJAX,因此JavaScript中的XMLHttpRequest对象可以为你提供帮助。你必须重建已经拥有的使用AJAX的东西。这很简单。 转到http://www.w3schools.com/ajax/ajax_xmlhttprequest_create.asp并阅读那里的内容。你需要大约10分钟才能理解。

答案 1 :(得分:1)

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

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

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

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

此外,虽然您可以对已保存的密码进行哈希处理,但您仍然可以SQL Injections。 mysql_real_escape_string()是你的朋友。 :)

答案 2 :(得分:0)

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

答案 3 :(得分:-3)

尝试ajax //在php中执行你要做的事情并将你的值作为json_decode($ yourvariable)返回 //所有json_decode都会将输出转换为数组格式。以便下面的函数可以读取它。

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

function(out)
{

}, "json");

看看我在我的网站上如何使用它: http://iadprint.com/products?product=product%201 (查看来源并滚动到底部)