problema con comillas en servidor Linux

Iniciado por KateLibby, 28 Febrero 2019, 15:14 PM

0 Miembros y 1 Visitante están viendo este tema.

KateLibby

Hola!

Tengo el siguiente código en el que la función confirmar me funciona sin problema cuando lo tengo subido a un servidor que corre sobre Windows, pero ha dejado de funcionarme en el momento en que lo he subido a un servidor Linux.

Código (php) [Seleccionar]
print '<td width="20"><a title="'.$langs->trans("borrar_reg").'" onClick = \'confirmar('.$reg['id'].', '.$reg['id_ticket'].')\' href="#"><img src="img/delete.png"></a></td>';

Por una serie de pruebas que he hecho, parece que el problema está en las comillas, ya que lo he probado con un simple alert y al final me ha funcionado haciendo combinaciones con las comillas dobles y simples. Pero con el caso del ejemplo no lo he conseguido, aún y habiendo visto que el código que genera el navegador es exactamente igual que el que me funciona con Windows.

¿Alguien podría echarme una mano? Gracias.

EDITO: Se me olvidaba decir que he mirado si me daba errores con el Inspector del navegador, y Firefox no me duevuelve ningún error, pero Chrome me dice que no encuentra la función confirmar

#!drvy

Las comillas no estan mal, el problema lo tienes en otro lado. Es feo tal y como están, pero mal lo que se dice mal.. no estan. Deberías mirar como declaras la función confirmar().

Lo ideal en estos casos es encapsular bien y hacer legible.

Código (php) [Seleccionar]
echo "<td width='20'>",
       "<a title='{$title}' onClick='confirmar({$reg['id']}, {$reg['id_ticket']})' href='#'>",
           "<img src='img/delete.png'>",
       "</a>",
   "</td>";



O mejor aún usando un sistema de templates o haciendo uno a lo cutre:

Código (php) [Seleccionar]
$template = '<td width="20">'.
               '<a title="%title%" onClick="confirmar(%id%, %id_ticket%)" href="#">'.
                   '<img src="img/delete.png>'.
               '</a>'.
           '</td>';

$variables = array(
   '%title%' => $langs->trans('borrar_reg'),
   '%id%' => $reg['id'],
   '%id_ticket%' => $reg['id_ticket']
);


$content = strtr($template, $variables);

echo $content;



Saludos

KateLibby

Gracias por tu respuesta.

La verdad es que el problema debe ser otro... Ahora he puesto el código de forma más entendible como me dijiste, y lo he aislado en un archivo que no tenga más que esa parte del código. De esta forma sí me ha funcionado.

Seguiré investigando.

KateLibby

Ok, ya he encontrado una solución. Donde tenía el problema era en meter un string de idioma en los alert

Código (php) [Seleccionar]
alert("'.$langs->trans("reg_deleted").'");

Haciendo esto se ha solucionado el problema

Código (php) [Seleccionar]
alert("'.json_encode($langs->trans("reg_deleted")).'");