duankekan9269 2015-09-01 09:32
浏览 17
已采纳

在没有刷新页面的情况下用PHP更新用户数据(Ajax?)

I made some update user information code in PHP, but that form I inserted into one of tabs on my site:enter image description here

When I fill form and submit it, my page refresh and brought me to first tabe again.

How can I prevent it?
I tryed with ajax but don't now how exactly.
[EDIT] I added ajax my code:

<form action="" method="post">
                    <ul id="edit_list">
                        <li>Adresa:<br> <input type="text" name="address" id="address"/></li>
                        <li>Grad: <bR><input type="text" name="city" id="city"/></li>
                        <li>Poštanski broj:<br> <input type="number" name="zip" id="zip"/></li>
                        <li>Mobitel/Telefon:<br> <input type="tel" name="phone_number" id="phone_number"/></li>
                        <li>Lozinka:<br> <input type="password" name="password" id="password"/><div class="password_strength" id="password_strength"></div></li>
                        <li>Ponoviti lozinku:<br><input type="password" name="repassword" id="repassword" onkeyup="checkPass(); return false;"/></li><div id="confirmMessage"></div><br>
                        <li><input type="submit" value="izmijeni"/></li>
                    </ul>
                </form>                 
                <script>
                    $('#submit').click(function(e){
                       e.preventDefault;
                        var address = $('#address').val();
                        var city = $('#city').val();
                        var zip = $('#zip').val();
                        var phone_number = $('#phone_number').val();
                        var password = $('#password').val();
                        var repassword = $('#repassword').val();
                        var dataString = 'address='+address+'&city='+city+'&zip='+zip+'&phone_number='+phone_number+'&password='+password+'&repassword='+password;
                        $.ajax({
                            type:'POST',
                            url:'update_user.php',
                            data:dataString,
                            success:function(){

                            },
                            error:function(){

                            }
                        });
                        return false;
                    });

php in anodher file:

<?php
                include 'init.php';

                if(isset($_POST['address'])){
                            $id = (int)$session_user_id;
                            $address = sanitize($_POST['address']);

                            mysql_query("UPDATE users SET `address` = '$address' WHERE `id` = $id");
                        }

                        if(isset($_POST['city'])){
                            $id = (int)$session_user_id;
                            $city = sanitize($_POST['city']);

                            mysql_query("UPDATE users SET `city` = '$city' WHERE `id` = $id");
                        }

                        if(isset($_POST['zip'])){
                            if(is_numeric($_POST['zip']) === true){
                                $id = (int)$session_user_id;
                                $zip = sanitize($_POST['zip']);

                                mysql_query("UPDATE users SET `zip` = '$zip' WHERE `id` = $id");
                            }else{
                                $errors[]= 'Poštanski broj mora zadržavati brojeve bez razmaka i znakova';
                            }                           
                        }

                        if(isset($_POST['phone_number'])){
                            if(is_numeric($_POST['phone_number']) === true){
                                $id = (int)$session_user_id;
                                $phone_number = sanitize($_POST['phone_number']);

                                mysql_query("UPDATE users SET `phone_number` = '$phone_number' WHERE `id` = $id");
                            }else{
                                $errors[]= 'Broj mobitela mora zadržavati brojeve bez razmaka i znakova';
                            }                                                   
                        }

                        if(isset($_POST['password'])){
                            if(strlen($_POST['password']) < 4){
                                $errors[] = 'Lozinka mora sadržavati više od 4 znaka';
                            }else if($_POST['password'] !== $_POST['repassword']){
                                $errors[] = 'Lozinke se ne poklapaju';
                            }else{
                                $id = (int)$session_user_id;
                                $password = sanitize($_POST['password']);
                                $password = md5($password);

                                mysql_query("UPDATE users SET `password` = '$password' WHERE `id` = $id");
                            }                           
                        }


                    ?>

Thanks

  • 写回答

1条回答 默认 最新

  • dongshiliao7990 2015-09-01 10:17
    关注

    event.preventDefault is a function: http://api.jquery.com/event.preventdefault/. Also you have no id of submit in your form.

    $('#my_submit_id').click(function(e){
       e.preventDefault();
       //...
       return false;
    });
    

    <input id="my_submit_id" type="submit" value="izmijeni"/>
    

    If possible you should move away from mysql_*** function in favor of mysqli or PDO. In addition to using prepared statements to protect queries from injection. http://php.net/manual/en/pdo.prepared-statements.php http://php.net/manual/en/mysqli.prepare.php

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭