使用PHP验证显示表单提交的数据值而不刷新

时间:2017-07-31 06:34:30

标签: javascript php jquery ajax cookies

我试图弄清楚如何在提交后通过HTML表单提交一些数据进行编辑并存储为cookie ...

最重要的是,表单验证:

<?php
//check if form was sent
if(isset($_POST['send'])){
  //some basic validation
  if(strlen($_POST['myname']) > 2){ 
    //set the cookie if passed
    setcookie('myname', $_POST['myname']);
  }
} 
//set error if didn't pass validation
else {
  $error[] = 'Your name is required!';
}
?>

因此,如果用户发布数据,它将捕获它并将其存储在cookie中。 如果没有,将给出错误:

<?php
  //check for errors
  if(isset($error)){
    foreach($error as $error){
     echo '<p style="background: red;">'.$error.'</p>';
    }
  }
?>

使用PHP的HTML表单:

<form method="post">
  <input name="myname" type="text" value="<?php if(isset($_COOKIE["myname"])){ 
  echo $_COOKIE["myname"];} ?>" placeholder="Your Name">
  <input name="send" type="submit" value="send">
</form>

这用于收集数据并发送它以通过PHP验证以设置cookie。如果已设置cookie,我希望它使用内联PHP代码显示该值。

当提交表单时会发生cookie,但用户只有在刷新页面后才能看到它,我可以添加标题(&#34;刷新:0&#34;);但它并没有解决问题,因为刷新时不会显示错误按摩。

我需要将它用于这些表单中的一些,所以目前我正在寻找一个快速简单的PHP解决方案,但它也可以是一个合适的Jquery / AJAX代码段。

3 个答案:

答案 0 :(得分:0)

您只能通过jquery,ajax

执行此操作

获取cookie值 -

Jquery的     var ckVal = $ .cookie(&#34; cookiename&#34;)

javascript -

function readCookie(name) {
            var nameEQ = name + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i];
                while (c.charAt(0) == ' ') c = c.substring(1, c.length);
                if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
            }
            return null;
        }

答案 1 :(得分:0)

第1名正如您在comment中提到的form and php same page中的form代码一样,如此简单地提交ajax。不需要error message

第二名:如果有任何错误意味着您只是简单地展示submited value并将value attribute放在value="<?php if(isset($_POST['myname'])){ echo $_POST['myname']; } ?>" 这样的

<?php

if(isset($_POST['send'])){

  if(strlen($_POST['myname']) > 2){ 

   // here you can do whatever you want 
   // header('Location:next_page.php');

  }else{

     $error[] = 'Your name is required! and it should be minimum three character ';
  }


}  

  if(isset($error)){
    foreach($error as $error){
     echo '<p style="background: red;">'.$error.'</p>';
    }
  }
?>

The HTML form with PHP:

<form method="post">
  <input name="myname" type="text" value="<?php if(isset($_POST['myname'])){ 
  echo $_POST['myname']; } ?>" placeholder="Your Name">
  <input name="send" type="submit" value="send">
</form>

PHP:

SystemControlBackgroundAltMediumBrush

答案 2 :(得分:0)

在Web2中,我们可以通过使用AJAX来实现。只需在表格sumbit上点击ajax并

$('#submit_btn').on('click', function (e) {
    e.preventDefault();
    var $this = $('#form_id');
    $.ajax({
        url: 'setcookie.php',
        data: $this.serialize(),
        dataType: 'html',
        type: 'POST',
        beforeSend: function () {
            // show loader
        },
        success: function (html) {
            // Show success message
            // Set value of input elements by reading cookie in JS
        },
        error: function () {
            // Show ValidationError
        }
    }); });

在cookie.php中,在表单输入上放置服务器端验证。如果你想把代码放在同一页面上,也可以在同一页面上制作ajax。