Foros del Web » Programando para Internet » Jquery »

json_encode

Estas en el tema de json_encode en el foro de Jquery en Foros del Web. Hola amigos, estoy tratando de implementar datatables y tengo un problema con las palabras con acentos y eñes, y no se como solucionarlo ya que ...
  #1 (permalink)  
Antiguo 15/10/2019, 07:13
 
Fecha de Ingreso: noviembre-2003
Mensajes: 498
Antigüedad: 16 años, 10 meses
Puntos: 7
json_encode

Hola amigos, estoy tratando de implementar datatables y tengo un problema con las palabras con acentos y eñes, y no se como solucionarlo ya que json es muy nuevo para mi y no se como usarlo, me pueden tirar una soga??
Gracias
  #2 (permalink)  
Antiguo 15/10/2019, 08:28
Avatar de ArturoGallegos
Moderador
 
Fecha de Ingreso: febrero-2008
Ubicación: Morelia, México
Mensajes: 6.734
Antigüedad: 12 años, 7 meses
Puntos: 1127
Respuesta: json_encode

JSON no tiene problema con palabras acentuadas o Ñ, debes tener problema en otra parte del código, pero si no lo muestras no se te puede ayudar.
  #3 (permalink)  
Antiguo 15/10/2019, 09:38
 
Fecha de Ingreso: noviembre-2003
Mensajes: 498
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: json_encode

Digo que son los acentos y las eñes por que cuando a la tabla le escribo una palabra con acentos y con eñes, se para el programa.
Este es el index
Código PHP:
<!DOCTYPE html>
<
head>
    <
script src="vendor/jquery/jquery-3.2.1.min.js"></script>

    <link rel="stylesheet"  href="vendor/DataTables/jquery.datatables.min.css">    
    <script src="vendor/DataTables/jquery.dataTables.min.js" type="text/javascript"></script> 

    <link href="style.css" rel="stylesheet" type="text/css" />

    <title>Column Search in DataTables using Server-side Processing</title>
    <script>
        $(document).ready(function ()
        {
            $('#tbl-contact thead th').each(function () {
                var title = $(this).text();
                $(this).html(title+' <input type="text" class="col-search-input" placeholder="Search ' + title + '" />');
            });
            
            var table = $('#tbl-contact').DataTable({
                    "scrollX": true,
                    "pagingType": "numbers",
                "processing": true,
                "serverSide": true,
                "ajax": "server.php",
                order: [[2, 'asc']],
                columnDefs: [{
                    targets: "_all",
                    orderable: false
                 }]
            });

            table.columns().every(function () {
                var table = this;
                $('input', this.header()).on('keyup change', function () {
                    if (table.search() !== this.value) {
                           table.search(this.value).draw();
                    }
                });
            });
        });

    </script>
</head>

<body>
    <div class="datatable-container">
        <h2>Column Search in DataTables using Server-side Processing</h2>
        <table name="tbl-contact" id="tbl-contact" class="display" cellspacing="0" width="100%">   

            <thead>
                <tr>
                    
                    <th>Name</th>
                    <th>Last Name</th>
                    <th>Address</th>
                    <th>Phone</th>
                    <th>Date Of Birth</th>

                </tr>
            </thead>
            
        </table>
    </div>
</body>
</html> 
y este es el server
Código PHP:
<?php
 

$table 
'tbl_contact';
 

$primaryKey 'id';
 

$columns = array(
    array( 
'db' => 'first_name''dt' => ),
    array( 
'db' => 'last_name',  'dt' => ),
    array( 
'db' => 'address',   'dt' => ),
    array( 
'db' => 'phone''dt' => 3,),
    array( 
'db' => 'date_of_birth','dt' => 4,
        
'formatter' => function( $d$row ) {
            return 
date'd-m-Y'strtotime($d));
        }
    )
   
);
 

$sql_details = array(
    
'user' => 'root',
    
'pass' => '',
    
'db'   => 'htl',
    
'host' => 'localhost'
);
 
 

 
require( 
'vendor/DataTables/server-side/scripts/ssp.class.php' );
 
echo 
json_encode(
    
SSP::simple$_GET$sql_details$table$primaryKey$columns )
)
  #4 (permalink)  
Antiguo 15/10/2019, 17:07
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.091
Antigüedad: 12 años, 1 mes
Puntos: 2227
Respuesta: json_encode

La única posibilidad que se me ocurre es que estés usando una codificación diferente a UTF8, que es la codificación requerida para JSON y falla cuando encuentra caracteres especiales en otra codificación.
__________________
- León, Guanajuato
- GV-Foto
  #5 (permalink)  
Antiguo 16/10/2019, 04:58
 
Fecha de Ingreso: noviembre-2003
Mensajes: 498
Antigüedad: 16 años, 10 meses
Puntos: 7
Respuesta: json_encode

donde tendria que poner en utf8 encode??
  #6 (permalink)  
Antiguo 16/10/2019, 16:02
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.091
Antigüedad: 12 años, 1 mes
Puntos: 2227
Respuesta: json_encode

Antes de codificar en json, porque si envías otra cosa que no sea utf8 esa función va a fallar.
__________________
- León, Guanajuato
- GV-Foto
  #7 (permalink)  
Antiguo 29/08/2020, 13:43
 
Fecha de Ingreso: enero-2008
Ubicación: Valencia
Mensajes: 56
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: json_encode

agrrega un meta dentro de <head>

Código PHP:
<head>
    <
meta charset="utf-8"



La zona horaria es GMT -6. Ahora son las 03:14.