弹出AJAX / PHP进行验证

时间:2014-03-01 14:45:37

标签: php jquery ajax

任何人都可以帮助我。请。我不知道如何弹出每个验证。

我使用alert(data.message);但验证说未定义。

这是我的函数的PHP代码:

<?php
include('connect.php');

$mydata = $_POST["results"];
$inputs = [];
parse_str($mydata, $inputs);
extract($inputs);
$plate_no_full = "$plate_char-$plate_no";
$result1 = mysql_query("SELECT * FROM cars where plate_no ='" . $plate_no_full . "'");
$result2 = mysql_query("SELECT * FROM cars where chass_no ='" . $chassis_no . "'");
$result3 = mysql_query("SELECT * FROM cars where eng_no ='" . $engine_no . "'");
$rows1 =mysql_num_rows($result1);
$rows2 =mysql_num_rows($result2);
$rows3 =mysql_num_rows($result3);

$errors = [];

if (mysql_num_rows($result1) > 0) {
  $errors[] = array(
    'error_code' => 1,
    'message' => 'That plate number was already taken'
  );

}

if (mysql_num_rows($result2) > 0) {
  $errors[] = array(
    'error_code' => 2,
    'message' => 'That chassis number was already taken'

  );

}
if (mysql_num_rows($result3) > 0) {
  $errors[] = array(
    'error_code' => 3,
    'message' => 'That engine number was already taken'
  );

}


if(empty($errors)) {


  mysql_query("INSERT INTO cars VALUES ('', '$plate_char-$plate_no', '$engine_no', '$chassis_no', '$car_year', '$car_brand', '$car_model', '$horse_power', '$torque','$transmission $transmission_no', '$drivetrain', '$length/$width/$height', '$seating', '$condition','$air_bag' , '$front_wheel/$rear_wheel' , '$front_susp/$rear_susp' , '$brake_front/$brake_rear' ,  '$eng_type', '$fuel_type' , '$acquisition_cost' , '$marg_cost', '$selling_price' , '')");
  if(isset($_POST["txt1"])){
    for($i=0;$i<=count($_POST["txt1"])-1;$i++){
      mysql_query("INSERT INTO expenses VALUES ('','$plate_char-$plate_no', '". $_POST["txt1"][$i] ."','". $_POST["txt2"][$i] ."', '". $_POST["txt3"][$i] ."')");
    }
  }

  $response = array(
    'message' => 'Successfully Added'
  );

  echo json_encode($response);

} else {
  $response = array(
    'errors' => $errors
  );

  echo json_encode($response);
}

这是我的ajax代码:

$(document).ready(function() {
          $('#submitme').on('submit', function(e) {
              e.preventDefault();
                    var mytxt1 = [];
                    var mytxt2 = [];
                    var mytxt3 = [];
                         $(".expense_name").each(function () {
                               mytxt1.push($(this).val());
                          });                            
                          $(".expense_desc").each(function () {
                                   mytxt2.push($(this).val());
                           });            
                           $(".expense_cost").each(function () {
                                 mytxt3.push($(this).val());
                            });            

                           var perfTimes = $(this).serialize();
             $.post("addfunction.php", {results: perfTimes, txt1: mytxt1,  txt2: mytxt2,  txt3: mytxt3 },   function(data) {

                         if(data.errors) {        } 
                            else {
                                   alert(data.message);
                                  window.localtion.href = data.redirect;
                                           }
                                    });
                            });
                    });

2 个答案:

答案 0 :(得分:0)

我发现我还需要解析返回的JSON。这是因为$ .post只是一个预先配置的$ .ajax调用,它(我认为)没有指定正在获取哪个dataType。 因此,您的客户端代码无法立即作为对象访问响应。

最简单的选择就是使用jQuery解析响应:

data = $.parseJSON(data);

否则,您可以更改代码以使用$ .ajax函数:

$.ajax({
  url:url,
  type:"POST",
  data:data,
  contentType:"application/json; charset=utf-8",
  dataType:"json",
  success: function(){
  ...
  }
})
祝你好运!

答案 1 :(得分:0)

您需要将数据类型添加到帖子请求中,以便jquery可以解析响应,然后您可以像处理错误一样处理错误:

$.post("addfunction.php", {results: perfTimes, txt1: mytxt1,  txt2: mytxt2,  txt3: mytxt3 }, function (data) {

    if (data.errors) {
        var alertErrors = "The following errors were found: ";
        $.each(data.errors, function(index, error){
           alertErrors += "\n" + error.message;//Add each error in a new line 
        });
        alert(alertErrors);
    } 
    else {
        alert(data.message);
        window.localtion.href = data.redirect;
    }
}, "json");//<--datatype here

您的回复中也缺少data.redirect值:

$response = array(
    'message' => 'Successfully Added',
    'redirect' => ''//add here
);

echo json_encode($response);

修复您写入“localtion”错误的重定向:

window.location.href = data.redirect;