简体   繁体   中英

SyntaxError: Unexpected token I in JSON at position 0

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM