【问题标题】:Send errors to PHP page in real time with jQuery使用 jQuery 将错误实时发送到 PHP 页面
【发布时间】:2013-03-29 05:01:00
【问题描述】:

我在 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);

【问题讨论】:

  • 请发布您的 jquery 代码。
  • 这不是问题。我只需要创建另一个 jQuery 代码来实时发回错误。实时部分是我遇到的问题。让它们在提交后弹出。
  • 通常它的工作方式是这样的:您从前端接收数据(例如,用户输入一些内容并按下提交)。比您使用 Ajax 请求调用后端可能是 GET 或 POST。后端(您的 php 脚本)将验证输入。如果用户名已经存在,即发生错误,您将向前端发送一条消息。前端有一个回调函数,它将检查来自前端的答案并添加成功/错误消息。
  • 我添加了我创建的代码。
  • 看看 Matthew Crumley 在这篇帖子中的回答:stackoverflow.com/questions/555315/…

标签: php jquery


【解决方案1】:

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

你的代码几乎有它:

$('#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 函数的匿名函数是一个回调函数,当从调用的脚本接收到响应时调用。变量 data 包含来自页面的响应。

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 可以轻松解析的方式发送消息

【讨论】:

  • 实时部分是我遇到的问题。将消息发送到 php 页面后弹出消息。
  • Ajax 允许您调用页面,然后处理对页面的响应。这样做的方式是将表单数据发送到验证它的页面,并输出验证响应。 AJAX 调用接收此响应,您可以在页面上处理此响应,而无需重新加载。然后,如果响应指示验证错误,您可以弹出一条消息。
  • 看,你在哪里回显“有一个错误”,需要发送回表单页面并弹出。
  • 更新了答案来解释这一点。简单地说,是的,数据是脚本的响应
  • 你在哪里 // 在这里处理来自页面的响应,我应该在那里做什么?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多