Vamos a ver, esto no tiene nada que ver con el tipo de etiqueta usada sino con una expectativa errónea. Voy a tratar de clarificar con un ejemplo extra resumido que, me parece, refleja la estructura original:
Código PHP:
// Este es el archivo prueba.php
<script type='text/javascript' src='jquery-3.1.0.min.js'></script>
<?php if($_SERVER['REQUEST_METHOD'] == 'POST'): ?>
<script type='text/javascript'>
$(document).ready(function() {
alert("<?= $_SERVER['HTTP_USER_AGENT'] ?>");
});
</script>
<?php else: ?>
<form method='post'><button type='submit'>Procesar</button></form>
<li onclick='procesar();'>Hola</li>
<?php endif ?>
<script type='text/javascript'>
function procesar() {
$.ajax({
url: 'test.php',
type: 'POST',
success: function(response) {
alert(response);
}
});
}
</script>
Cuando el servidor recibe una petición POST de
prueba.php (ya sea mediante el envio normal del formulario o via ajax), llama al ejecutable PHP quien genera un documento HTML:
Código:
<script type='text/javascript' src='jquery-3.1.0.min.js'></script>
<script type='text/javascript'>
$(document).ready(function() {
alert("Mozilla/5.0 (Windows NT 10.0; Trident/7.0; rv:11.0) like Gecko");
});
</script>
<script type='text/javascript'>
function procesar() {
$.ajax({
url: 'test.php',
type: 'POST',
success: function(response) {
alert(response);
}
});
}
</script>
que el servidor devuelve al cliente.
Ahora bien, cuando la petición se hace via el formulario, el navegador recibe el documento generado, lo presenta en pantalla
y ejecuta el código javascript que contenga.
Pero, si la petición se hace via ajax, el documento generado no se procesa de ninguna forma, simplemente se recibe como texto (lo cual se corrobora con el alert(response)) y ya tendría que ser el código del manejador success el encargado de procesarlo (algo, por cierto, poco recomendable)
LineComment Saludos