Exécuter la requête CURL dans AJAX

Résolu/Fermé
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023 - Modifié le 26 avril 2020 à 22:03
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023 - 29 avril 2020 à 12:53
Je voudrais afficher le résultat d'un script php dans une input text.

Lorsque l'IBAN est entré, le clique sur le champ BIC devrait afficher le BIC correspondant.
Mon code php contient une variable($iban), une fois cette variable est entré, le script returne le BIC correspondant.
Je voudrais récupérer le champ (input type id=iban) et l'envoyer dans ma variable($iban) afin de récupérer le BIC dans le formulaire.
J'ai essayer de le faire avec ajax mais sans succès.
https://forums.commentcamarche.net/forum/affich-36558996-verifier-que-l-iban-rentre-est-correct-puis-afficher-le-bic#p36561002
Code html avec script js
<form action="" method="post">

    <label>IBAN</label>

    <input id="iban" type="text"/>
                   
    <label>BIC</label> 
        
    <input id="bic" readonly type="text"></input>

</form>

<script type="text/javascript">
$("#iban").on("blur",function(){
    var iban = $(this).val();
 getBIC(iban);

});


function getBIC(iban){
 $.ajax({
  url: 'curl.php',  // mon script curl pour afficher le Bic
  data: { // je ne sais quoi envoyer ici
  },
  success: function(result) {
     if(typeof(result)!="undefined" && result!=null){
    if(result.valid) {
        
   console.log(result);
   
   $("#bic").val(result.bic); 
    }else{
   alert ("IBAN non valide");
    }
     } else{
    alert ("No result");
  }
  },
  
 });
}
</script>

<script  src="https://code.jquery.com/jquery-3.4.1.min.js"  
             integrity="sha256-CSXorXvZcTkaix6Yvo6HppcZGetbYMGWSFlBw8HfCJo="   
             crossorigin="anonymous">
</script>


Code php(curl.php)
<?php 

include_once('simple_html_dom/simple_html_dom.php');
  /* Utilisation de Curl */
 
//On stock la valeur des variables POST
 $url='https://bank.codes/iban/validate/';
$iban='';

$data=array(
    'iban' => $iban) ;
$fields_string = http_build_query($data);
 
//Initialisation de curl dans $curl
$ch = curl_init();
 
curl_setopt($ch, CURLOPT_URL, $url); //Page sur laquelle envoyer les POST autrement dit la page vers laquelle pointe le formulaire
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS,$fields_string); //On envoie les valeurs 
curl_setopt($ch, CURLOPT_FAILONERROR, true); // Required for HTTP error codes to be reported via our call to curl_error($ch)
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);


$data = curl_exec($ch); //Recuparation de la page
curl_close($ch);

$html = file_get_html($data) ;
$pattern='[A-Z]{6,6}[A-Z2-9][A-NP-Z0-9]([A-Z0-9]{3,3}){0,1}'; //regex pour BIC EU
preg_match_all('/'.$pattern.'/', $data, $out);
print_r($out[0][0]);

// clean up memory
$html->clear();
unset($html);
 
 ?>

Comment envoyer la variable
var iban = $(this).val()
dans le code php afin d'executer la requête curl?
Je serais reconnaissant pour toutes les idées.

7 réponses

jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717
27 avril 2020 à 09:29
Bonjour,
data: { // je ne sais quoi envoyer ici
  },

Tu lui passe les paramètres que tu souhaites :
type: "POST",
data: { iban:iban },


et dans le code PHP .. tu les récupère
$iban = !empty($_POST['iban']) ? $_POST['iban'] : null;


Par contre, pour récupérer proprement les données ensuite dans ton js, il faut indiquer que ton ajax attend du JSON
$.ajax({ 
        type: "POST",
       'curl.php',
       data: { iban:iban },
        dataType: "json"



et côté php, renvoyer le résultat au format JSON
// print_r($out[0][0]);
echo  json_encode($out[0][0]); // renvoi au format JSON. !!Attention à ne rien afficher d'autre dans ce script sinon le format json ne sera pas valide



0
ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023
27 avril 2020 à 11:16
Bonjour
Merci pour votre aide
Le clic sur le champ bic ne retourne pas le bic correspondant.
Je pense que la variable($iban) n'est pas récupérer dans curl.php
Dans mon formulaire
form action="" method="post"

Par contre quand j'envoie un IBAN dans la variable($iban) dans curl.php ça me renvoie juste
"GEBABEBB"
je sais pas si c'est du json.
0
jordane45 Messages postés 38346 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 16 décembre 2024 4 717 > ananias8686 Messages postés 86 Date d'inscription samedi 9 février 2019 Statut Membre Dernière intervention 19 août 2023
27 avril 2020 à 11:32
Le fait de faire de l'ajax rend ton
<form action="" method="post">
inutile...
As tu regardé dans la console de ton navigateur ce qui s'y passait ?
L'appel ajax se fait ?
Quelle réponse obtiens tu ? (dans la console toujours...) ?

A noter que pour débuguer facilement l'ajax, je te conseilles d'utiliser FireFox. La console est plus simple pour l'ajax.
Il faut, bien entendu, activer le debugage du XHR.
ensuite, regarder ce qui est envoyé/recu en dépliant la petite fleche qui se trouve au début de la ligne;
0