Problème AJAX JSON API

Résolu
Frenchisme Messages postés 8 Date d'inscription   Statut Membre Dernière intervention   -  
jordane45 Messages postés 38479 Date d'inscription   Statut Modérateur Dernière intervention   - 27 déc. 2024 à 22:57

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 
 

A voir également:

7 réponses

jordane45 Messages postés 38479 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

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.sitesdebloques.org/forum/affich-37772066-php-jquery-debugage-ajax?v8th5MQcMDx5M3B0rKm5-neTZwY_nmCtrBX4svMXzV8


0
luckydu43 Messages postés 4216 Date d'inscription   Statut Membre Dernière intervention   1 042
 

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 8 Date d'inscription   Statut Membre Dernière intervention  
 

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 38479 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

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.sitesdebloques.org/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 8 Date d'inscription   Statut Membre Dernière intervention  
 

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 38479 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

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 8 Date d'inscription   Statut Membre Dernière intervention  
 

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

0
jordane45 Messages postés 38479 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

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
jordane45 Messages postés 38479 Date d'inscription   Statut Modérateur Dernière intervention   4 745
 

Vu que tu es revenu intervenir dans une autre de tes questions ....  peux tu nous dire où tu en es sur celle là ??

Si c'est résolu.. il faut marquer cette discussion en RESOLU


0