用于验证的AJAX/PHP弹出窗口

用于验证的AJAX/PHP弹出窗口,php,jquery,ajax,Php,Jquery,Ajax,任何人都可以帮助我。请我不知道如何在每次验证存在时都弹出一个窗口 我使用了警报(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

任何人都可以帮助我。请我不知道如何在每次验证存在时都弹出一个窗口

我使用了
警报(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);
}

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

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

data = $.parseJSON(data);
否则,您可以更改代码以使用$.ajax函数:

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

祝你好运

您需要将数据类型添加到post请求中,以便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
正在修复您编写的“Location”错误的重定向:


是什么给了你
console.log(数据)?是否需要数据?您所说的console.log(数据)是什么意思;?而不是:
alert(data.message)写入
控制台日志(数据)。现在,如果在windows上,在浏览器中,按F12打开console。所以你们在控制台里得到了什么。它是预期的数据吗?或者检查开发人员工具栏中的网络选项卡,并检查响应。。。但是请阅读我下面的答案。先生,您的代码已经成功添加了。谢谢,先生。但是错误验证不存在。先生,我该怎么办?先生,成功添加表单中的重定向不起作用,先生。好的,关于您的请求,我对我的帖子做了一些更改。非常感谢先生。我试试这个。再次感谢,先生
$.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
$response = array(
    'message' => 'Successfully Added',
    'redirect' => ''//add here
);

echo json_encode($response);
window.location.href = data.redirect;