Tengo un widget en el sitio web del sujeto de prueba; abajo.
<div id="widget"></div> <script src="http://www.project.com/api/?api=bXOIo4ERTaZt-a5b71a1c" type="text/javascript"></script> <script> initialise(); </script>El widget se comunica con el sitio web del proyecto sin problemas. Excepto, cuando tengo el PHP en el sitio web del proyecto; al igual que.
function initialise() { var container = 'widget'; var ele = document.getElementById( container ); var response = "<?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>"; ele.innerHTML = response; }Este es el PHP en el sitio web del proyecto, llamado por el widget. Esto funciona muy bien, excepto cuando coloco el PHP en una nueva línea (por ejemplo, sangría, etc.) y aparece un error en las herramientas de desarrollo; al igual que.
var response = " <?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>";Obtengo esto: "Error de sintaxis no detectado: token no válido o inesperado"
Los puntos a tener en cuenta son: 1) Estoy usando Javascript síncrono por una razón y Javascript/AJAX asíncrono no es una opción, porque necesito varios widgets en la misma página, 2) mi campo de especialización es PHP y no Javascript, 3) Probé el reemplazo de cadenas (Javascript) en caracteres que no son UTF8, saltos de línea y tabulaciones, etc. y caracteres invisibles en la respuesta.
Un poco perdido en cuanto a por qué no puedo usar sangría en el bloque PHP, ¿alguna sugerencia para obtener la respuesta al widget en una sola pieza, sin errores ni fallas? Gracias.
El error ocurre porque la cadena de response variable está en varias líneas. Para hacer una cadena de varias líneas, usa acentos graves. Prueba esto:
var response = ` <?php foreach( $this -> get( 'api:bestsellers' ) as $record ): ?><p><?php echo $record -> get( 'title' ); ?>, <?php echo $record -> get( 'format_price' ); ?></p><br><?php endforeach; ?>`; // Did not give an error!