Ajax POST 使用 bootstrap 验证器转 GET
Ajax POST turns GET with bootstrap validator
我对 bootstrap 验证器有疑问。我有一个包含近 40 个字段的表单,我没有使用原生的 HTML / PHP 方式。我只是使用提交按钮来调用 ajax 并保留数据,但是当我这样做时,POST 变成 GET 并且我有讨厌的 "Request-URI Too Long, The requested URL's length exceeds the capacity limit for this server."
我正在阅读以前的所有案例,但 none 对我有用。唯一有效且 POST 不变的是取消 bootstrap 验证器,但有了它,我无法控制前端的字段验证。
显然,AJAX 中的调用有效,甚至我可以调试 PHP (save.php),但响应是一个没有意义的 GET 调用。
这是我的代码,几周来我一直在尝试解决它,但没有成功。
JS函数:
$('#modalcust').validator().on('submit', function(e) {
if (e.isDefaultPrevented()) {
swal("Error, error"); // This is just an example.
} else {
value = $("#field").val(); // Here I have nearly 40 different vars (field values).
$.ajax({
url: "db/save.php",
type: "POST",
data: value,
success: function(data, textStatus, jqXHR) {
$('#modalcust').modal('toggle');
},
error: function(jqXHR, textStatus, errorThrown) {
swal("Error!", textStatus, "error");
}
});
}
});
HTML形式:
<form data-toggle="validator" role="form">
....
<button type="submit" class="btn btn-primary" id="btnsave"><i class="fa fa-save"></i> Save</button>
</form>
PHP:
<?php
include "conect.php";
$crud=$_POST['crudmethod'];
$protocolo = time() . rand(10*45, 100*98);
if($crud=='E'){
$protocol = $_POST['protocol'];
}
$rawData = $_POST['photosrc'];
if ($rawData) {
$fotoFileName = 'uploads/'.$protocol.'.jpg';
$fotosave = __DIR__ .'/../'.$fotoFileName;
file_put_contents($fotosave, file_get_contents("data://".$rawData));
}
the 40 vars from POST
if($crud=='N'){
mysqli_query($conn, "insert into people( 'vars' ) values('vars')");
if(mysqli_error($conn)){
$result['error']=mysqli_error($conn);
$result['result']=0;
}else{
$result['error']='';
$result['result']=1;
$result['id']=mysqli_insert_id($conn);
}
}else if($crud == 'E'){
mysqli_query($conn, "update people set 'vars = vars' where id = $id");
if(mysqli_error($conn)){
$result['error']=mysqli_error($conn);
$result['result']=0;
}else{
$result['error']='';
$result['result']=1;
}
}else{
$result['error']='Invalid';
$result['result']=0;
}
$result['crud']=$crud;
$result['crud']=$crud;
echo json_encode($result);
?>
HTML 的形式应该改为:
<form id="modalcust" data-toggle="validator" role="form">
JS代码应改为:
$('#modalcust').validator();
$('#modalcust').on('submit', function(e) {
e.preventDefault();
value = $("#field").val(); // Here I have nearly 40 different vars (field values).
$.ajax({
url: "db/save.php",
type: "POST",
data: value,
success: function(data, textStatus, jqXHR) {
$('#modalcust').modal('toggle');
},
error: function(jqXHR, textStatus, errorThrown) {
swal("Error!", textStatus, "error");
}
});
});
我对 bootstrap 验证器有疑问。我有一个包含近 40 个字段的表单,我没有使用原生的 HTML / PHP 方式。我只是使用提交按钮来调用 ajax 并保留数据,但是当我这样做时,POST 变成 GET 并且我有讨厌的 "Request-URI Too Long, The requested URL's length exceeds the capacity limit for this server." 我正在阅读以前的所有案例,但 none 对我有用。唯一有效且 POST 不变的是取消 bootstrap 验证器,但有了它,我无法控制前端的字段验证。 显然,AJAX 中的调用有效,甚至我可以调试 PHP (save.php),但响应是一个没有意义的 GET 调用。 这是我的代码,几周来我一直在尝试解决它,但没有成功。
JS函数:
$('#modalcust').validator().on('submit', function(e) {
if (e.isDefaultPrevented()) {
swal("Error, error"); // This is just an example.
} else {
value = $("#field").val(); // Here I have nearly 40 different vars (field values).
$.ajax({
url: "db/save.php",
type: "POST",
data: value,
success: function(data, textStatus, jqXHR) {
$('#modalcust').modal('toggle');
},
error: function(jqXHR, textStatus, errorThrown) {
swal("Error!", textStatus, "error");
}
});
}
});
HTML形式:
<form data-toggle="validator" role="form">
....
<button type="submit" class="btn btn-primary" id="btnsave"><i class="fa fa-save"></i> Save</button>
</form>
PHP:
<?php
include "conect.php";
$crud=$_POST['crudmethod'];
$protocolo = time() . rand(10*45, 100*98);
if($crud=='E'){
$protocol = $_POST['protocol'];
}
$rawData = $_POST['photosrc'];
if ($rawData) {
$fotoFileName = 'uploads/'.$protocol.'.jpg';
$fotosave = __DIR__ .'/../'.$fotoFileName;
file_put_contents($fotosave, file_get_contents("data://".$rawData));
}
the 40 vars from POST
if($crud=='N'){
mysqli_query($conn, "insert into people( 'vars' ) values('vars')");
if(mysqli_error($conn)){
$result['error']=mysqli_error($conn);
$result['result']=0;
}else{
$result['error']='';
$result['result']=1;
$result['id']=mysqli_insert_id($conn);
}
}else if($crud == 'E'){
mysqli_query($conn, "update people set 'vars = vars' where id = $id");
if(mysqli_error($conn)){
$result['error']=mysqli_error($conn);
$result['result']=0;
}else{
$result['error']='';
$result['result']=1;
}
}else{
$result['error']='Invalid';
$result['result']=0;
}
$result['crud']=$crud;
$result['crud']=$crud;
echo json_encode($result);
?>
HTML 的形式应该改为:
<form id="modalcust" data-toggle="validator" role="form">
JS代码应改为:
$('#modalcust').validator();
$('#modalcust').on('submit', function(e) {
e.preventDefault();
value = $("#field").val(); // Here I have nearly 40 different vars (field values).
$.ajax({
url: "db/save.php",
type: "POST",
data: value,
success: function(data, textStatus, jqXHR) {
$('#modalcust').modal('toggle');
},
error: function(jqXHR, textStatus, errorThrown) {
swal("Error!", textStatus, "error");
}
});
});