简体   繁体   English

语法错误:JSON 中位置 0 的意外标记 I

[英]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在这里,我在 php 中有代码,我在其中接收变量以将其发送到我的数据库,但没有发送它只告诉我它已成功插入但在数据库中它们没有更新

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).您必须对所有输出(还有错误消息)使用 json_encode 函数。 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.如果您将 json 作为字符串发送,这将起作用。 use

JSON.stringify(ur_object here) JSON.stringify(ur_object 在这里)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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