Tengo un problema con PHP y JavaScript.
Objetivo : se debe ejecutar un script .php cuando se llama al detector de eventos del botón HTML en el archivo .js sin recargar la página.
Resultado esperado : cuando se hace clic en el botón, se ejecuta el script PHP. En mi caso, se descargará un archivo desde una URL al servidor.
Resultado real : no sé cómo llamar al script PHP desde el archivo JavaScript.
Intenté usar AJAX, pero nada funcionó realmente. Además, no sabía dónde colocar exactamente la referencia de la biblioteca para JQuery.
También traté de usar un formulario, y dentro de él una entrada (type="submit"), pero cuando esto llama a la función PHP, actualiza la página y todo en la página que mostraba el lado del cliente desaparece.
El botón HTML:
<button type="button" class="button" id="btnsubmit">Submit</button> <img class="image" id="someimage">El detector de eventos de JavaScript (tengo el botón y la imagen ya asignados a una var):
btnsubmit.addEventListener("click", () => { someimage.src = "directory/downloadedimg.png"; });El script PHP:
<?php $path = 'https://somewebsite.com/imagetodownload.png'; $dir = 'directory/downloadedimg.png'; $content = file_get_contents($path); $fp = fopen($dir, "w"); fwrite($fp, $content); fclose($fp); ?>Entonces, en general, quiero hacer lo siguiente cuando se hace clic en el botón:
Probé la respuesta de @Abhishek y pensé que el problema ahora está en mi archivo php. Siempre me da un error interno del servidor. ¿Detecta algún error en este código para cargar la imagen desde $path (es una URL) a mi servidor (serverdirectorypath es $image_url):
<?php $params = $_POST['data']; $path = $params['path']; $image_url = $params['image-url']; $content = file_get_contents($path); $fp = fopen($image_url, "w"); fwrite($fp, $content); fclose($fp); ?>Puedes hacer las siguientes cosas.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script> $("#button-id").on('click',function(){ var data = {"image-url" : "directory/downloadedimg.png","path" : "https://somewebsite.com/imagetodownload.png"}; $.ajax({ type: 'POST', url: "{hostname}/test.php", data: data, dataType: "json", success: function(resultData) { alert("success"); } }); }); $params = $_POST['data']; $path = $params['path']; $image_url = $params['image-url'];y hacer la operación comercial, que desea hacer en este.
No necesita otra biblioteca, puede hacer esto con vanillaJs.
Su malentendido proviene de: "cómo llamar a php con Js y obtener el valor devuelto"
Comience aquí, tiene un ejemplo: https://www.w3schools.com/php/php_ajax_php.asp
Una vez que pueda llamar a su script PHP, habrá hecho el 70% de su objetivo