Soy nuevo en JavaScript. Tengo el siguiente código JavaScript en mi archivo onboard.js .
var questions = [ {question: "What's your country?", type: "select", response: ['India','America','Japan']} ] El código anterior es un código de muestra que contiene una lista de tres países de forma estática. Tengo una función de PHP que devuelve la lista de 251 países de la base de datos en mi archivo functions.php . ¿Cómo puedo reemplazar la parte de response del código JS anterior con la lista de datos de países devueltos por mi función PHP a continuación?
function countriesForJS(){ global $pdo; $stmt = $pdo->prepare("SELECT id, name FROM countries"); $stmt-> execute(); while($row = $stmt->fetch()){ $data[] = $row; } return $data; }Su pregunta podría interpretarse de otra manera, pero tengo dos posibilidades:
1 - Suponiendo que la secuencia de comandos JS y la secuencia de comandos PHP están separadas, entonces debe realizar una solicitud http al servidor (usando AJAX, por ejemplo)
2 - Suponiendo que el código JS y PHP estén en el mismo script, sugeriría incrustar el código php en el código JS como se muestra a continuación:
<script> ... var serverCountries = "<?php echo implode(",", countriesForJS()) ?>"; var questions = [ { question: "What's your country?", type: "select", response: serverCountries.split(',')// replace the existing response by server countries /* response: ['India','America','Japan', ...serverCountries.split(',')]// or add server countries to the existing response */ } ]; ... </script>EDITAR (JS, los scripts PHP están separados) En este caso, asumo que se puede acceder al servidor a través de un punto final, y se puede acceder a la salida del script llamando, por ejemplo, a la URL de API a continuación: http://[YOUR_HOST]/my_php_script.php [asumiendo nuevamente que el método http es GET y no hay autenticación]
En este caso, aquí hay una solicitud jQuery ajax que se puede hacer desde su script JS:
(necesita importar jQuery si aún no lo ha hecho)
$.ajax({ url: "http://[YOUR_HOST]/my_php_script.php", type: 'GET', dataType: 'json', // added data type success: function(serverCountries) { console.log(serverCountries); var questions = [ { question: "What's your country?", type: "select", response: serverCountries } ]; // do something with your questions variable .... } });Y el script my_php_script.php es algo así como:
<?php function countriesForJS(){ global $pdo; $stmt = $pdo->prepare("SELECT id, name FROM countries"); $stmt-> execute(); while($row = $stmt->fetch()){ $data[] = $row; } return $data; } $data = countriesForJS(); header('Content-Type: application/json'); echo json_encode($data); ?>si usa jquery, puede usar autocompletar, que realiza una solicitud a su php y completa un campo de entrada con los datos recuperados. https://jqueryui.com/autocomplete/
$('#el nombre de tu input').autocomplete({ source: function (request, response) { $.ajax( type: 'GET', url: route + 'la ruta de tu archivo php', data: { term: request.term, // term es lo que envias a php para filtrar }, success: function (data) { response(data) } }) }, minLength: 1, select: function (event, ui) { codeAccountGenAnaPro = ui.item.code // codeAccountGenAnaPro es el valor donde se va a guardar una vez selecciones del autocomplete } })ojala te guste la respuesta y te ayude