0

我在 php 中构建了一个表单,将输入值发送到 jQuery 页面,然后将信息发送到另一个 php 页面以将值插入到数据库中。

问题是

当出现错误时,假设用户名存在,我需要能够将消息从 php 页面发送回原始表单并实时显示。关于如何做到这一点的任何想法?

这是处理从表单提交到插入数据库的 php 页面的 jQuery 。

// Handle account updates
$('#save_account').click(function() { 
    var log_token = $('#log_token').val();  
    var user_name = $('#user_name').val();  
    var user_pass = $('#user_pass').val();  
    $.post("php/includes/update_account.php", {
        log_token: log_token,
        user_name: user_name,
        user_pass: user_pass
    });
});

这是将值插入数据库的 PHP 。

$log_token = $_POST['log_token'];
$user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];

$db = db_open();
$query = "SELECT user_name FROM users WHERE user_name='$user_name'";
$result = db_query($db, $query);
$result = db_num_rows($result);
if (!$result) {
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
        WHERE user_id='$_SESSION['user']['user_id']'";
    $result = db_query($db, $query);
} else {
    Pass Error to FORM HERE
}
db_close($db);
4

1 回答 1

0

看看 AJAX。这是一种无需刷新即可向页面发送数据和从页面发送数据的方法。实现这一点的最简单方法是使用jQuery 的 ajax 方法

您的代码几乎拥有它:

$('#save_account').click(function() { 
    var log_token = $('#log_token').val();  
    var user_name = $('#user_name').val();  
    var user_pass = $('#user_pass').val();  
    $.post("php/includes/update_account.php", {
        log_token: log_token,
        user_name: user_name,
        user_pass: user_pass
        }, function(data){
            // handle the response from the page here
            if(data != "") {
                alert(data);
            }
        }
    );
});

传递给 post 函数的匿名函数是一个回调函数,当从调用的脚本接收到响应时调用。变量数据包含来自页面的响应。

PHP

$log_token = $_POST['log_token'];
$user_name = $_POST['user_name'];
$user_pass = $_POST['user_pass'];

$db = db_open();
$query = "SELECT user_name FROM users WHERE user_name='$user_name'";
$result = db_query($db, $query);
$result = db_num_rows($result);
if (!$result) {
    $query = "UPDATE users SET user_name='$user_name', user_pass='$user_pass' 
        WHERE user_id='$_SESSION['user']['user_id']'";
    $result = db_query($db, $query);
} else {
    // return there was an error
    echo "There was an error";
}
db_close($db);

你可以用它做更复杂的事情。您可以将一系列错误传递回页面。查看 JSON,了解如何以 JavaScript 可以轻松解析的方式发送消息

于 2013-03-28T20:42:11.640 回答