Ajax, jQuery and PHP


Ajax, jQuery and PHP

我有一个jQuery表单,我创建

如下
<div data-role="page" id="page3" data-theme="d" >
<div data-role="header">
 <h1 style="font-family: 'Open Sans Condensed', sans-serif;font-  size:23px">LetsAllSave</h1>

<div data-role="content">
<form action="passenger.php" data class="ui-body ui-body-a ui-corner-all" method="post" id="passengerfrmsignup" >
<fieldset>
  <div data-role="fieldcontain">
    <label for="name">
      <em>* </em> Name: </label>
      <input type="text" id="name" placeholder="Name, at least 5 characters"
        name="name" class="required" minlength=5 data-mini="true" onkeyup="this.value=this.value.replace(/[^A-Za-z]/g,'');"/>
  </div>
  <div data-role="fieldcontain">
    <label for="surname">
      <em>* </em> Surname: </label>
      <input type="text" id="surname" placeholder="Surname, at least 5 characters"
        name="surname" class="required" minlength=5 data-mini="true" onkeyup="this.value=this.value.replace(/[^A-Za-z]/g,'');"/>
  </div>
  <div data-role="fieldcontain">
    <label for="phone">
      <em>* </em> Phone: </label>
      <input type="tel" id="phone" placeholder="phone format: 05xxxxxxxxx"
        name="phone" class="required" number=true   minlength="11" maxlength="11" data-mini="true"/>
  </div>
  <div data-role="fieldcontain">
    <label for="email">
      <em>* </em> Email: </label>
      <input type="text" id="email" placeholder="eg. someone@gmail.com"
        name="email" class="required email" data-mini="true"/>
  </div>
  <div data-role="fieldcontain">
    <label for="password"> 
      <em>* </em>Password: </label>
      <input type="password" id="password" placeholder="At least 5 character password"
        name="password" class="required" minlength=5 data-mini="true"/>
  </div>
   <div id="container">  </div> 
  <div class="ui-body ui-body-b">
    <input  type="submit" value="Register"
      id="pass-signup" data-theme="d"/>
  </div>
</fieldset>
</form>

为了简单起见,我还有乘客.php文件如下:

<?php 
if (isset($_POST['name'],$_POST['surname'],$_POST['phone'],
$_POST['email'],$_POST['password'])) {
print_r($_POST);
}
else echo "data not set"; 
?>

注意:我按如下方式验证了我的表单输入:

$( "#passengerfrmsignup" ).validate({
submitHandler: function( form ) {
    $.ajax({
        type: $form.attr('method'),
        url: $form.attr('action'),
        data: $form.serialize(),
        dataType : 'json'
    success: function(data) {
            console.log(data);
           alert("successful");
        }
    });
return false; // required to block normal submit since you used ajax

 }
 }); 

使用 jquery.form-validator.min.js 它工作正常。但是,在所有字段正确填写并提交乘客.php表格后,文件返回"数据未设置"。

可能有什么问题?我做了很多徒劳的研究。

因为 JQuery .serialize() 返回 URL 参数 ( name=test&surname=cool ),所以你需要在 AJAX 请求中指定type: "POST"

您还可以使用 $_REQUEST 而不是 $_GET 检查参数,以检查您是否能够看到变量服务器端。

将您的

乘客.php页面更改为:

<?php 
if (isset($_POST['name']) && isset($_POST['surname']) && isset($_POST['phone']) &&
isset($_POST['email']) && isset($_POST['password']) && !empty($_POST['name']) && !empty($_POST['surname']) && !empty($_POST['phone']) && !empty($_POST['email']) && !empty($_POST['password'])) {
print_r($_POST);
}
else echo "data not set"; 
?>

和你的 javascript/jQuery

$( "#passengerfrmsignup" ).validate({
submitHandler: function( form ) {
    $.ajax({
        type: 'POST',
        url: $form.attr('action'),
        data: $form.serialize()
    success: function(data) {
            console.log(data);
           alert("successful");
        }
    });
return false; // required to block normal submit since you used ajax

 }
 }); 

尝试使用以下代码片段:

foreach($_POST as $key => $value){
   if(isset($value)){
      return true; // variable is set
   }else{
      return false; //varible is not set
   }
}