I have a function to save data to database and then I show a success/error message. The data gets saved as expected but the message is not shown to the user (modal doesn't appear on screen) and I have no idea why.
What I return from php is a json with two variables.
If I don't save data and just send the message the modal is shown with no error, but if I save the data, the modal does not appear on screen.
Can Someone tell me why is that?
function GrabarCompra()
{
    $GuardarModifcarFactura=$_POST['btnFactura'];
    $FK_Usuario=$_SESSION['IDUsuario'];
    $GuarMod='';
    $Respuesta=''; 
    if($GuardarModifcarFactura=='GrabarFactura')
    {
        $IDCompra=0;
        $ClaveHacienda=$_POST['NoClaveDoc'];
        $NumeroConsecutivo=substr($_POST['NoClaveDoc'],21,20);
        $TipoDocumento=ObtenerTipoDocumentoNumerico($_POST['TipoDocumento']);
        $FechaEmision= DateTime::createFromFormat('d-m-Y', $_POST['Fecha'])->format('Y-m-d H:i:s');
        $ActividadEconomica=$_POST["ActividadEconomica"];
        //Emisor
        $NombreEmisor=$_POST["NombreEmisor"];
        $CedulaEmisor=$_POST["CedulaEmisor"];
        //Receptor
        $NombreReceptor=$_POST["NombreReceptor"];
        $CedulaReceptor=$_POST["CedulaReceptor"];
        //Otros Datos
        $CondicionVenta=$_POST['CondicionVenta'];   
        $Plazo=$_POST['Plazo'];
        $CodigoMoneda=$_POST['TipoMoneda'];
        $TipoCambio=$_POST['TipoCambio'];
        $TotalServGravados=QuitarFormatoNumero($_POST['MontSGF']);
        $TotalServExentos=QuitarFormatoNumero($_POST['MontSEF']);
        $TotalServExonerados=QuitarFormatoNumero($_POST['MontSExoF']);
        $TotalMercanciasGravadas=QuitarFormatoNumero($_POST['MontGrF']);
        $TotalMercanciasExentas=QuitarFormatoNumero($_POST['MontExF']);
        $TotalMercanciasExoneradas=QuitarFormatoNumero($_POST['MontExoF']);
        $TotalGravado=bcdiv(($TotalServGravados+$TotalMercanciasGravadas),1,2);
        $TotalExento=bcdiv(($TotalServExentos+$TotalMercanciasExentas),1,2);
        $TotalExonerado=bcdiv(($TotalServExonerados+$TotalMercanciasExoneradas),1,2);
        $TotalVenta=bcdiv(($TotalGravado+$TotalExento+$TotalExonerado),1,2);
        $TotalDescuentos=QuitarFormatoNumero($_POST['MontDescF']);
        $TotalVentaNeta=QuitarFormatoNumero($_POST['MontSubF']);
        $TotalImpuesto=QuitarFormatoNumero($_POST['MontIVF']);
        $TotalComprobante= QuitarFormatoNumero($_POST['MontTF']);       
        $ImpuestoDevuelto= QuitarFormatoNumero($_POST['MontIVDF']);
       $MedioPago= "01";      
       $Terminal= substr($NumeroConsecutivo,0,3);
       $Sucursal= substr($NumeroConsecutivo,3,5);
       $Conexion = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);
        if ($Conexion->connect_error) 
        {
            die("Connection failed: " . $Conexion->connect_error);
        } 
        $sql="INSERT INTO Compra 
              (FK_Usuario,FK_Cliente,Fecha,Status,
                        ClaveLarga,
                        Secuencia,
                        ClaveHacienda,
                        NumeroConsecutivoHacienda,
               TipoDocumento,NombreEmisor,NombreComercialEmisor,TipoEmisor,NombreReceptor,CedulaReceptor,TipoReceptor,
               CondicionVenta,Plazo,MedioPago,CodigoMoneda,TipoCambio,Mensaje,TotalServGravados,TotalServExentos,
               TotalServExonerados,TotalMercanciasGravadas,TotalMercanciasExentas,TotalMercanciasExoneradas,TotalGravado,
               TotalExento,TotalExonerado,TotalVenta,TotalDescuentos,TotalVentaNeta,TotalImpuesto,TotalComprobante,
               FK_ActividadEconomica)
               VALUES
               ($FK_Usuario,'$CedulaEmisor','$FechaEmision','','','','$ClaveHacienda','$NumeroConsecutivo','$TipoDocumento',
                '$NombreEmisor','$NombreComercialEmisor','','$NombreReceptor','$CedulaReceptor','','$CondicionVenta',$Plazo,
                '$MedioPago','$CodigoMoneda',$TipoCambio,'',$TotalServGravados,$TotalServExentos,$TotalServExonerados,
                $TotalMercanciasGravadas,$TotalMercanciasExentas,$TotalMercanciasExoneradas,$TotalGravado,$TotalExento,
                $TotalExonerado,$TotalVenta,$TotalDescuentos,$TotalVentaNeta,$TotalImpuesto,$TotalComprobante,
                $ActividadEconomica);";
        if($Conexion->query($sql) === TRUE) 
        { 
            $Respuesta="Documento guardado correctamente";           
            $GuarMod='Guardo';
        }
        else
        {
          $Respuesta= "Error al guardar el documento";
          $GuarMod='Error';
        }
    }
            $users_arr[] = array( 
                             "Respuesta"=>$Respuesta,
                             "GuarMod"=>$GuarMod,
                         );
        // encoding array to json format
        echo json_encode($users_arr);
        exit;    
}
Ajax
$.ajax({
                      url: 'Logica/Compra.php',
                      type: 'post',
                      data: 
                      {
                         btnFactura:TipoBoton,
                         /*Campos de encabezado de Factura*/
                         /*Emisor*/
                         CedulaEmisor:document.getElementById('Cedula').value,
                         NombreEmisor:document.getElementById('Nombre').value,
                         /*Receptor*/
                         CedulaReceptor:document.getElementById('CedulaReceptor').value,
                         NombreReceptor:document.getElementById('NombreReceptor').value,                     
                         IDFactura:document.getElementById('IDFactura').value,
                         NoFactura:document.getElementById('NoFactura').value,
                         NoClaveDoc:document.getElementById('NoClaveDoc').value,
                         Fecha:document.getElementById('Fecha').value,
                         Plazo:document.getElementById('Plazo').value,
                         ActividadEconomica:'null',
                         MedioPago:MP,
                         CondicionVenta:document.getElementById('CondicionVenta').value,
                         TipoMoneda:document.getElementById('TipoMoneda').value,
                         TipoCambio:document.getElementById('TipoCambio').value,
                         Sucursal:document.getElementById('Sucursal').value,
                         Terminal:document.getElementById('Terminal').value,
                         TipoDocumento:document.getElementById('TipoDocumento').value,/*01=Factura 02=NotaDebito 03=Nota Credito 04=Tiquete*/
                         DetalleFactura:TableData,
                         /*Campos de Calculos*/
                         MontSEF:document.getElementById('MontoSEF').value,
                         MontSGF:document.getElementById('MontoSGF').value,
                         MontSExoF:document.getElementById('MontoSExoF').value,
                         MontExF:document.getElementById('ExentoF').value,
                         MontGrF:document.getElementById('GravadoF').value,
                         MontExoF:document.getElementById('ExoneradoF').value,
                         MontSubF:document.getElementById('SubF').value,
                         MontDescF:document.getElementById('DescF').value,
                         MontIVF:document.getElementById('ImpuestoVentasF').value,
                         MontIVDF:document.getElementById('ImpuestoVentasDevueltoF').value,
                         MontOImpF:document.getElementById('OImpF').value,
                         MontTF:document.getElementById('TotalF').value,
                         Saldo: Saldo,
                      },
                      dataType:'json',
                    success : function(response){
                        var len =response.length;
                        if(len>0)
                        {
                            var Respuesta=response[0]['Respuesta'];
                            var GuarMod=response[0]['GuarMod'];
                            $("#MSJ").html(Respuesta);
                            $("#ModalMSJ").modal("show");
                            sessionStorage.setItem('GuarMod',GuarMod);
                        }
                    }
                  });
                  return false;