php - 在不嵌入 php 的情况下呈现表单错误

标签 php mysql json forms

我一直在为 future 的雇主做一些示例练习,最近我的任务是我第一次编写 php。作业的一部分涉及将服务器端代码与 UI 代码分开,我完全理解它的值(value)并且我同意它。

任务的要点是创建一个简单的表单,将其发布到服务器,进行验证,然后发布到数据库,还涉及很多其他任务和事情,但这几乎就是它的真正含义。

所以我无法完全确定将表单验证错误呈现给用户的最佳方式。我最终进行了一次 session ,并将用户重定向回表单,这似乎是大多数人建议的。然后我打印回$_SESSION提交的数据给value内的用户表单的属性input元素以及创建一些附加元素(如果存在错误)。

我被告知这不是他想要的,他简短地提到使用 PHP 和 MySQL 创建一个 API,通过 Ajax 调用返回 JSON 数据。我理解这是为了从数据库获取数据并返回 JSON。

在这种情况下,当作业实际上不需要获取数据库中存储的数据,而只是插入新数据时,您是否会以 JSON 形式发回错误和表单字段的内容,而不是使用 $_SESSION

最佳答案

使用 Ajax 并不意味着使用数据库。任何错误验证都可以使用 ajax 请求在服务器端完成。

例如,如果您有一个表单提交一个只能包含字母的值,例如,假设您有以下表单:

<span id="error" style="display:none;color:red;"></span>
<form id="myform" action="submit.php" method="POST">
  <input name="mystring" type="text" placeholder="your text here"><br>
  <button id="submit">Submit</button>
</form>

你的validate.php看起来像这样:

<?php>
 echo json_encode(array(
                  "success"=>(ereg("^[a-zA-Z]+$", $_POST['mystring']),
                  "error"=>"This field must contain only letters"
                 ));
?>

那么你的ajax请求应该看起来像这样(使用jQuery):

$("#submit").click(function() {
  $.ajax({
    type: "POST",
    url: "validate.php",

    success: function(response, status) {
      if(response.success) {
        $("#myform").submit();
      }
      else {
        $("#error").html(response.error).show();            
      }
    }
  });
});

这是如何工作的?

当您单击提交按钮时,onclick 事件会触发这部分代码: $("#submit").click(function() {

validate.php发出一个ajax请求,该请求接受字段值并使用正则表达式检查它是否仅包含字母。 ereg("^[a-zA-Z]+$", $_POST['mystring']) 的结果为 true 或 false。如果这是真的,那么我们假设该字符串仅包含字母。 json_encode()将数组转换为 JSON 字符串,因此您必须将正则表达式结果放入数组中。然后你必须回显它来创建一个空白页面并 将其返回到浏览器。 jQuery 捕获响应并假设响应是有效的 JSON 字符串,尝试解析它并创建一个 javascript 对象。然后这个对象被传递给成功回调函数。在我们的例子中,这称为响应。 接下来,检查 response 对象的 success 属性的值。如果为真,我们将提交表单,如果不是,我们将显示一条错误消息。

关于php - 在不嵌入 php 的情况下呈现表单错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23449349/

相关文章:

php - mysql_fetch_assoc 返回 NULL

javascript - 将日期从 JSON 写入到 DatePicker 中

php - 比较 PHP 和 MySQL 中的 UNIXTIME

java - 使用 RxJava2 将 CSV 文件转换为 JSON

php - 带有返回 json 的 ajax 调用永远不会成功

php - === 和 != 可以互换使用吗?

php - 将两个以上的查询合并为一个

php - Apache 404 文件匹配

mysql - 按列中的特定值排序

ios - 以不同的方式快速解析 JSON。使用哪一个?