任何人都可以帮助我。请。我不知道如何弹出每个验证。
我使用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;
}
});
});
});
答案 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;