J'ai un programme qui exécute le script du serveur sur fraspberry pi (client qui est aussi un serveur). Je scanne un code à barres qui exécute ensuite quelques commandes (y compris la génération de fichier XML). Lorsque je soumets le formulaire avec le numéro 'serial'
, je veux être en mesure de récupérer le nom de fichier (chaîne) retourné à partir de la méthode AJAX ($ _POST) dans server.php? if (isset($_POST['filename'])
ne retourne pas le nom de fichier, comment puis-je obtenir le nom de fichier avec un seul AJAX? et l'utiliser en PHP? Je n'ai aucun message d'erreur, le $ _POST ['nom de fichier'] est vide. J'ai essayé de séparer le script dans un fichier différent et de créer un autre AJAX appelant ce script PHP mais cela n'a pas fonctionné et je me demande s'il y a une possibilité de le faire avec un seul AJAX et d'écouter PHP pour le nom retourné.Obtenir l'objet AJAX retourné en PHP
Ou peut-être existe-t-il un meilleur moyen d'obtenir le nom de fichier du fichier externe que via le client? (il y a toujours un seul fichier XML en attente d'être récupéré).
server.php
<?php
$show_error = "";
if (isset($_POST['serial'])) {
$serialnumber = $_POST['serial'];
if ($serialnumber > 0) {
if (isset($_POST['filename'])) {
$filenamer = $_POST['filename'];
echo $filenamer;
} else {
echo "no filename returned from ajax call";
}
$remote_file_url = 'http://' . $_SERVER['REMOTE_ADDR'] . '/345.xml'; //FILENAME NEEDED
$local_file = '345.xml'; //FILENAME NEEDED
$copy = copy($remote_file_url, $local_file);
}
?>
<html>
<body>
<form name="test" method="post">
<input type="number" name="serial" id="serial" value="1">
<input type="submit" name="">
</form>
</body>
<script type="text/javascript">
function scan(serialnumber)
{
return $.ajax({
url : 'http://localhost/test.php',
type : 'POST',
dataType : 'json',
data : { serial_no : serialnumber},
cache : false,
success : function(data) {
var filename = data[Object.keys(data)[1]];
console.log(filename);
}
});
};
scan(<?php echo $serialnumber; ?>);
</script>
</html>
test.php
<?php
header('Access-Control-Allow-Origin: *');
header('Content-type: text/json');
# Get the serial
$serial_no = $_POST['serial_no'];
$return['serial_no'] = $serial_no;
# Get the filename of the XML file
$filename = shell_exec('find /var/www/html/*.xml -printf "%f"');
$return['filename'] = $filename;
$return['scanpink'] = 1;
echo json_encode($return);
?>
Qu'est-ce qui cause exactement des problèmes? Quel (s) message (s) d'erreur obtenez-vous? Qu'avez-vous essayé jusqu'à présent? Ceux-ci devraient tous être adressés dans votre question –
@WilliamPerron 'if (isset ($ _ POST ['filename'])' ne retourne pas le nom de fichier, comment puis-je obtenir le nom de fichier avec un seul AJAX? Et l'utiliser en PHP? Je n'ai pas message d'erreur, le '$ _POST ['nomfichier']' est vide.J'ai essayé de séparer le script dans un fichier différent et de créer un autre AJAX appelant ce script PHP mais cela n'a pas fonctionné et je me demande s'il y a une possibilité de le faire avec un seul AJAX et que PHP écoute le nom de fichier retourné – UZIERSKI
il n'y a pas d'élément 'filename' dans l'élément' data' de l'appel ajax, donc il est logique qu'il n'existe pas dans la variable '$ _POST'. a part, vous devriez probablement ajouter cette information dans votre question –