I have a problem trying to send some data from a table that I made, I get an error, it says that the update I am doing to the database is correct but the fields are not updated and it sends me this error
parsererror
SyntaxError: Unexpected token I in JSON at position 0
at JSON.parse (<anonymous>)
at n.parseJSON (jquery.min.js:4)
at vc (jquery.min.js:4)
at x (jquery.min.js:4)
at XMLHttpRequest.<anonymous> (jquery.min.js:4)
I really don't know what this error was because when I click on the send button I get this error and the fields are not updated ... this is the scrip I have
<script>
function viewData(){
$.ajax({
url: '../A30.php?p=view',
method: 'GET',
}).done(function(data){
$('tbody').html(data)
tableData()
})
}
function tableData(){
$('#tabledit').Tabledit({
url:'../A30.php',
eventType: 'dblclick',
editButton : true,
deleteButton : false,
columns:{
identifier:[0,'ID'],
editable: [[0,'ID'],[1, 'Empleado'],[5,'Monto']]
},
buttons:{
style: 'width:150px;',
edit:{
class: 'btn btn-sm btn-success' ,
html: '<span class="fa fa-pencil-square-o" ></span> Editar',
action: 'edit'
},
delete:{
class: 'btn btn-sm btn-default',
html: '<span class="glyphicon glyphicon-trash"></span> Trash',
action: 'delete'
},
save:{
class: 'btn btn-sm btn-info',
html: '<span class="fa fa-floppy-o "></span> Guardar'
},
restore:{
class: 'btn btn-sm btn-warning',
html: 'Restore',
action: 'restore'
},
confirm:{
class: 'btn btn-sm btn-danger',
html: 'Confirm'
},
},
onSuccess: function(data, textStatus, jqXHR){
viewData()
},
onFail: function(jqXHR, textStatus, errorThrow){
console.log('onFail(jqXHR, textStatus, errorThrow)');
console.log(jqXHR);
console.log(textStatus);
console.log(errorThrow);
},
onAjax: function(action, serialize){
console.log ('onAjax(action, serialize)');
console.log(action);
console.log(serialize);
}
});
}
</script>
here I have the code in php where I receive the variables to send it to my database but it is not sent it only tells me that it has been inserted successfully but in the database they were not updated
header('Content-Type: application/json');
$input = filter_input_array(INPUT_POST);
if ($input['action'] === 'edit') {
$actualizar ="UPDATE sysnom_nomina_det_tmp SET monto='".$input['Monto']."' where ID='".$input['ID']."' AND empleado = '".$input['Empleado']."' AND monto = '".$input['Monto']."' ";
$resul = sqlsrv_query($conexion, $actualizar);
if(!$resul){
echo "Error al Actualizar";
echo $actualizar;
echo $resul;
} else {
echo "Insertado exitosamente......";
echo $resul;
}
}
sqlsrv_close($resul);
echo json_encode($input);
}
I would really appreciate it if you can help me since I don't know what I have wrong
You must use json_encode function for all outputs(also error messages). try this version :
header('Content-Type: application/json');
$input = filter_input_array(INPUT_POST);
$respone = [
"message"=>"",
"data"=>[]
];
if ($input['action'] === 'edit') {
$actualizar ="UPDATE sysnom_nomina_det_tmp SET monto='".$input['Monto']."' where ID='".$input['ID']."' AND empleado = '".$input['Empleado']."' AND monto = '".$input['Monto']."' ";
// you can use prepeared statetments for sql injection threats
$resul = sqlsrv_query($conexion, $actualizar);
$response["data"]["result"] = $resul;
if(!$resul)
$respone["message"] = "Error al Actualizar";
else
$respone["message"] = "Insertado exitosamente......";
}
sqlsrv_close($resul);
$response["data"]["query"] = $actualizar;
$response["data"]["input"] = $input;
echo json_encode($response);
}
<?php
require ('recursos/conexion.php');
$page = isset($_GET['p'])? $_GET['p'] : ''
; if ($page=='view') {
$sql = "exec sp_sys_nom_autoriza2 'A30',1";
$stmt = sqlsrv_query($conexion, $sql);
$select = "select * from sysnom_nomina_det_tmp where suc = 'A30'";
$stm = sqlsrv_query($conexion, $select);
$totalVU = sqlsrv_num_rows($stm);
while($row = sqlsrv_fetch_array($stm, SQLSRV_FETCH_ASSOC)) {
if ($row['notas'] !== "AHORRO" ) {
if ($row['notas'] !== "PRESTAMO DE AHORRO") {
?>
<tr style="width:1900px" >
<td style="width:141px;"><?php echo $row["ID"]?> </td>
<td style="width:141px;"><?php echo $row["empleado"]?></td>
<td style="width:141px;"><?php echo $row["nombre"]?> </td>
<td style="width:141px;"><?php echo $row["depto"]?> </td>
<td style="width:141px;"><?php echo $row["percepcion"]?></td>
<td style="width:141px;"><?php echo $row["monto"]?></td>
<td style="width:141px;"><?php echo $row["notas"]?> </td>
<?php
$autorizar = rtrim($row['autorizar']);
if ($autorizar == 1) {
echo "<td id='autorizar'><input type ='checkbox' name='checkbox' id='checkbox' value='1' style='width:30px; height:30px;' checked></td>";
}else{
echo "<td id='autorizar'><input type ='checkbox' name='checkbox' id='checkbox' value='1' style='width:30px; height:30px;'></td>";
}
}
}
}
}else{
header('Content-Type: application/json');
$input = filter_input_array(INPUT_POST);
$respone = [
"message"=>"",
"data"=>[]
];
if ($input['action'] === 'edit') {
$actualizar ="UPDATE sysnom_nomina_det_tmp SET monto='".$input['Monto']."' where ID='".$input['ID']."' AND empleado = '".$input['Empleado']."' AND monto = '".$input['Monto']."' ";
// you can use prepeared statetments for sql injection threats
$resul = sqlsrv_query($conexion, $actualizar);
if(!$resul)
$respone["message"] = "Error al Actualizar";
else
$respone["message"] = "Insertado exitosamente......";
}
sqlsrv_close($resul);
$response["data"]["query"] = $actualizar;
$response["data"]["result"] = $resul;
$response["data"]["input"] = $input;
echo json_encode($response);
}
?>
This will work if you send the your json as string. use
JSON.stringify(ur_object here)
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.