elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Usando Git para manipular el directorio de trabajo, el índice y commits (segunda parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web (Moderador: #!drvy)
| | |-+  [Pregunta]: ¿Por qué y cómo puedo resolver esto?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [Pregunta]: ¿Por qué y cómo puedo resolver esto?  (Leído 3,629 veces)
Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
[Pregunta]: ¿Por qué y cómo puedo resolver esto?
« en: 22 Julio 2020, 08:33 am »

Básicamente estoy tratando de usar document.write en un archivo php que es llamado con una función ajax...

digamos que en la función tengo...

Código
  1.                        .done(function(results)
  2. {
  3. $('#box_element').append(results);
  4. })
  5.  

y en el archivo php que es llamado...
Código
  1. <?php
  2. // [...]
  3.  
  4.      ?>
  5.      <h6>Este es el dato de ajax: <script type="text/javascript">document.write('un dato');</script></h6>
  6.      <?php
  7.  
  8. // [...]
  9. ?>
  10.  

Lo que me pasa es que me pone toda la pantalla en blanco y me pone "un dato" pero me saca todo mi html... no le encuentro sentido a que pase eso...


En línea

Drakaris

Desconectado Desconectado

Mensajes: 286


Todo lo que puedas imaginar, lo puedes crear.


Ver Perfil
Re: [Pregunta]: ¿Por qué y cómo puedo resolver esto?
« Respuesta #1 en: 22 Julio 2020, 19:16 pm »

Este archivo PHP contiene HTML, pureba de cambiar tu archivo a:
Código:
<?php
// [...]
      echo '<h6>Este es el dato de ajax: <script type="text/javascript">document.write("un dato");';</script></h6>
// [...]
OJO! Son comillas simples en el echo porque dentro del string utilizas comillas dobles. [en el string de write() cambie las comillas simples por las dobles ya que sino produciria un error]
      v--------- PHP               v--------- PHP
'    '  '    '                       "    "  "    "
  ^-----^------- strings        ^-----^------- strings

      v--------- string               v--------- string
'    "  "    '                       "    '  '    "
  ^-----^------- strings        ^-----^------- strings

Ahora cuando llames con AJAX, la salida será lo que tengas en el echo. Y se añadirá al #box_element con la funcion append()


« Última modificación: 22 Julio 2020, 19:23 pm por Drakaris » En línea

Lo increible, no es lo que ves, sino como es
MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: ¿Por qué y cómo puedo resolver esto?
« Respuesta #2 en: 22 Julio 2020, 23:16 pm »

document.write hace eso. A menos que el documento se este cargando. Cargas el sitio web, realizas la petición, la respuesta a la petición tiene html con un script tag que corre document.write y finalmente jQuery inyecta el script y lo ejecuta.

Abre la consola en este sitio web, escribe:

Código
  1. document.write('un dato');

y ocurrirá lo mismo.

Citar
Note: as document.write writes to the document stream, calling document.write on a closed (loaded) document automatically calls document.open, which will clear the document.

https://developer.mozilla.org/en-US/docs/Web/API/Document/write
En línea

Leguim


Desconectado Desconectado

Mensajes: 720



Ver Perfil
Re: [Pregunta]: ¿Por qué y cómo puedo resolver esto?
« Respuesta #3 en: 23 Julio 2020, 19:36 pm »

Pero por qué en otros códigos que tengo que no son de AJAX sino que son en una página HTML, el código "document.write" me imprime bien la variable de javascript y no me da problemas como ahora...

Bäsicamente estoy tratando de hacer un "echo" para javascript... y la idea es hacerlo sin cerrar todo entre comillas..
En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: [Pregunta]: ¿Por qué y cómo puedo resolver esto?
« Respuesta #4 en: 23 Julio 2020, 19:55 pm »

Pero por qué en otros códigos que tengo que no son de AJAX sino que son en una página HTML, el código "document.write" me imprime bien la variable de javascript y no me da problemas como ahora...

Bäsicamente estoy tratando de hacer un "echo" para javascript... y la idea es hacerlo sin cerrar todo entre comillas..

Porque el documento todavía se esta cargando. Entonces document.write escribe al documento actual. Si lo que quieres es escribir al final del documento HTML simplemente usa el append de jQuery:

Código
  1. $('body').append('un dato');
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines