Problème AJAX JSON API

Frenchisme Messages postés 6 Date d'inscription mercredi 21 août 2024 Statut Membre Dernière intervention 31 août 2024 - 21 août 2024 à 22:25
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 - 31 août 2024 à 23:09

Bonjour à tous,

Je me tourne vers vous car je bloque sur un problème...

Je suis en train de réaliser un site internet pour une webradio et je bloque au niveau du titrage.

J'ai un fichier titrage.js, qui est normalement censé faire appel à titrage.php à l'aide de $.ajax url.

Dans le titrage php, j'ai toute la partie API qui s'occupe de récupérer le titre en cours, l'insérer en base de données, ... toute cette partie fonctionne.

La partie JS doit normalement récupérer les informations obtenues grâce à l'API de titrage.php et les envoyer dans les différentes div.

Mon soucis est que titrage.js ne fait rien.. il ne récupère aucune données de titrage.php et n'exécute aucune requêtes PHP.

Voici mes codes :

Titrage.js

$( document ).ready(function() {
  titrage();
    $("head").append(
    $(document.createElement("link")).attr({rel:"stylesheet", type:"text/css", href:"https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css"})
    );
});

 function titrage() {
$.ajax({
      url: "titrage.php",
      cache:false,
      dataType : 'json',
      success:function(data){
          
if($('#artiste').text() != data.artist) {

$("#artiste").html(data.artist);
$("#titre").html(data.title);
			  
}

      },

  });
setTimeout(titrage, 10000);//10sec
  }

Titrage.php

<?php
ini_set('display_errors','0');
require('../configuration/config.php');
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Headers: Origin, Methods, Content-Type");


$url = 'URL DE MON API';
$data = file_get_contents(''.$url.'');
$json = json_decode($data);
$isSong = true;

$artist = $json->{'artist'};
$title = $json->{'title'};  
$cover = $json->{'cover'}; 
$time = date("H:i");

$sql = 'INSERT INTO radio VALUES(NULL, "'.$artist.'", "'.$title.'", "'.$covers.'", "'.$time.'")';
$conn->query($sql);      

?>

Je précise que le code m'a été fourni, et que je ne suis pas un super pro du JS... mais là j'avoue ne pas comprendre pourquoi titrage.js ne fait rien de tout ce que je lui demande... surement un truc bête mais qui doit avoir son importante..

Merci à vous par avance de l'aide que vous m'apporterez 
 

6 réponses

jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
22 août 2024 à 09:46

bonjour 

ton titrage.php ne retourne rien... donc le if dans ton js ne peut pas fonctionner...

et pour t'aider un peu

https://forums.commentcamarche.net/forum/affich-37772066-php-jquery-debugage-ajax?v8th5MQcMDx5M3B0rKm5-neTZwY_nmCtrBX4svMXzV8


0
luckydu43 Messages postés 3730 Date d'inscription vendredi 9 janvier 2015 Statut Membre Dernière intervention 11 septembre 2024 917
Modifié le 22 août 2024 à 09:49

Bonjour,

Je n'ai pas l'impression que le .php renvoie une valeur. Ensuite, il peut être utile d'afficher l'erreur rencontrée côté .js

Dans le .js, juste après le "}," du "success:", ajoute un "error:" :

error: function(jqXHR, textStatus, errorThrown) {
    console.error("Erreur rencontrée : " + textStatus + ", " + errorThrown);
}

Côté PHP, après le "$conn->query($sql);", ajoute un retour JSON :

echo json_encode([
    "artist" => $artist,
    "title" => $title,
    "cover" => $cover,
    "time" => $time
]);

Aussi, travaille mieux les indentations ':-D On met 4 espaces par bloc d'indentation par convention plutôt que des tabulations.

Tiens au jus !


0
Frenchisme Messages postés 6 Date d'inscription mercredi 21 août 2024 Statut Membre Dernière intervention 31 août 2024
31 août 2024 à 21:50

Bonsoir à tous,

Je réouvre le topic car j'ai un nouveau soucis...
Lorsque titrage.php récupère un titre qui comporte un " ' " tout le système plante... 
 

Savez-vous si une solution existe pour corriger cela ?

Merci beaucoup !

0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
31 août 2024 à 21:57

Bonjour,

Normalement... nouveau problème = nouvelle discussion sur le forum...

Bon..bref..

Quoi qu'il en soit, tu n'es pas assez précis dans tes explications !

Quand tu dis :

Lorsque titrage.php récupère un titre qui comporte un " ' " tout le système plante... 

C'est lorsque tu récupères la valeur dans ton "data" ? (je suppose... )

Et donc, ton souci vient au niveau de ta requête !

Pour éviter cela, si tu utilises PDO, il te faut utiliser les requêtes préparées.

Voir, ici :

https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs

0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Frenchisme Messages postés 6 Date d'inscription mercredi 21 août 2024 Statut Membre Dernière intervention 31 août 2024
31 août 2024 à 22:01

Autant pour moi je le saurais pour la prochaine fois :-) 

Oui pardon, par exemple si 

$artist = $json->{'artist'};

renvoi un artiste qui comporte un " ' " tout le script ne fonctionne plus.

J'ai lu plusieurs choses, notamment sur utf8 mais je t'avoue que j'y comprend pas grand chose...

Merci

0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
31 août 2024 à 22:56

C'est donc bien le souci que j'avais compris.

Tu dois donc appliquer ce qui se trouve dans le lien que je t'ai donné pour modifier ta requête

$sql = 'INSERT INTO radio VALUES(NULL, "'.$artist.'", "'.$title.'", "'.$covers.'", "'.$time.'")';
$conn->query($sql);      

https://www.pierre-giraud.com/php-mysql-apprendre-coder-cours/requete-preparee/

0
Frenchisme Messages postés 6 Date d'inscription mercredi 21 août 2024 Statut Membre Dernière intervention 31 août 2024
31 août 2024 à 23:02

Merci pour ton retour, je viens d'essayer mais malheureusement ça ne change rien...

0
jordane45 Messages postés 38238 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 6 septembre 2024 4 689
31 août 2024 à 23:09

tu as essayé quoi ?

sans voir ton code .   ni des captures d'écran de ton navigateur (voir le lien que je t'avais donné pour debuguer l'Ajax...) ... IMPOSSIBLE de t'aider davantage !!

0