如何在更新成功后使用ajax和重定向页面更新mysql?

时间:2014-07-29 06:54:09

标签: php jquery mysql ajax

如何在更新成功后使用ajax和重定向页面更新mysql?

更新mysql重定向到update

后点击链接member.php

的index.php

<a onClick="update()" id="1">update<a>  

<script type="text/javascript">
    $('.clickable').on('click', function() {
        var data = {
            id: $(this).data('id')
        };
        $.ajax({
            type: 'POST',
            url: 'update.php',
            data: data,
            success: function(response) {
                console.log(response);
            }
        });
    });
</script>

update.php

<?php
include('connect.php'); 
$id = $_POST['id'];
mysql_query ("UPDATE member SET number = '' WHERE id=$id");
?>
<script language="javascript">
    window.location.href = "member.php"
</script>

3 个答案:

答案 0 :(得分:0)

首先添加课程以点击

<a onClick="update();" id="1" class="clickable">update<a> 

然后返回回复: -

$query = mysql_query ("UPDATE member SET number = '' WHERE id=$id");

if($query)
echo 'success';

然后成功

success: function(response) {
    window.location.href = "member.php";
}

所以完整的代码将是: -

<a onClick="update()" id="1" class="clickable">update<a>  

<script type="text/javascript">
    function update(){
        $.ajax({
            type: 'POST',
            url: 'update.php',
            data: {id: $(".clickable").attr('id')},
            success: function(response) {
                 //$('.clickable').hide(); // hide not possible on redirect
                 window.location.href = "member.php";
            }
        });
    }
</script>

update.php

<?php
include('connect.php'); 
$id = $_POST['id'];
$query = mysql_query ("UPDATE member SET number = '' WHERE id=$id");
if($query)
  echo 'success';
?>

答案 1 :(得分:0)

使用带有JSON答案的AJAX,这样你就可以随时重定向而没有问题,并使用PHP中的对象到你的JS流程:

您不必在DOM上使用js事件,只需使用您的js即可实现它,并且它将使您的代码更具可重用性,因为它将使其免于硬编码变量:

<强>的index.html

<html>
    <head>
         <script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    </head>

    <body>
        <a class="clickable" href="update.php" id="1">update</a>

        <script type="text/javascript">
            $('.clickable').on('click', function(e) {
                e.preventDefault();

                var link = $(this);
                var data = {
                    id: link.attr('id')
                };

                $.ajax({
                    type: 'POST',
                    url: link.attr('href'),
                    data: data,
                    dataType: 'json',
                    success: function(response) {
                        console.log(response);

                        if (response.result) {
                            console.log('All done!');
                        } else {
                            console.log('Something went wrong!');
                        }

                        if (response.redirect != 'undefined') {
                            window.location.href = response.redirect;
                        }
                    }
                });
            });
            </script>
    </body>
</html>

然后,在您的PHP中,您必须将答案作为JSON值给出,以获得它:

<强> update.php

<?php
include('connect.php'); 
$id = $_POST['id'];
$data = array();
if ( mysql_query ("UPDATE member SET number = '' WHERE id=$id") ) {
    $data['result'] = true;
    $data['redirect'] = 'http://example.com/redirect_to_ok_place';
} else {
    $data['result'] = false;
    $data['redirect'] = 'http://example.com/redirect_wrong_result';
}

echo json_encode($data); die();
?>

请注意,如果您想从PHP获取值,您的AJAX文件必须完成并回显您的响应,并且您必须有一个格式良好的json,因此,如果没有显示任何内容,请使用控制台检查您要获取的值,如果你以前回应过什么。

要完成,同样重要的是要指出你不能使用MYSQL_QUERY PHP函数!!不推荐使用,这是一个巨大的安全漏洞。使用PDO,或者,如果没有别的办法,可以使用mysqli扩展。您的代码已准备好进行MySQL注入,因此请在此处检查它以避免它。

答案 2 :(得分:0)

您不需要提出重复请求。只需更改您的update.ph,如下所示:

<?php
include('connect.php'); 
$id = $_POST['id'];
mysql_query ("UPDATE member SET number = '' WHERE id=$id");

header('Location: http://www.example.com/member.php'); // Here you need to give your actual path where you want to redirect.

exit;
?>