Bonjour,

Voilà j'ai un problème avec la fonction $.ajax, je n'arrive pas à l'utiliser pourtant je l'ai déjà utilisé de la manière si-dessous ! Mais je comprends pas pourquoi ça ne marche pas ! Je n'arrive même pas à lancer le alert() lors du success de la fonction $.ajax !

index.html

<?php
session_start();
if ( !isset($_SESSION'access']) ){
    $_SESSION'REQUEST_URI'] = $_SERVER'REQUEST_URI'];
    header('Location:login.php');
}
?>
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Photos</title>
    <!-- STYLE -->
    <link rel="stylesheet" screen="media" href="style.css"/>
    <!-- SCRIPT -->
    <script src="jquery.js" type="text/javascript"></script>
    <script src="script.js" type="text/javascript"></script>
</head>
<body>
    <?php
    if ( !isset($_SESSION'access']) ){
        include 'login.php';
    }else{
        require 'config.php';
        extract($_POST);
        $r = "
            select *
            from albums
        ";
        $q= mysql_query($r);
        while ( $d = mysql_fetch_assoc($q) ){
            echo '<div class="unAlbum">'.$d'name'].' - '.$d'date'].' - <a class="download_album_link" id="'.$d'id'].'" href="albums/'.$d'file'].'">Télécharger les photos</a> ('.$d'click'].' fois téléchargé !)</div>';
        }
        //echo '<a href="add_album.php">Ajouter un album</a>';
    }
    ?>
</body>
</html>

script.js

$( function(){
    $('a.download_album_link').click( function(){
        var id = $(this).attr('id');
        $.ajax({
            type: 'POST',
            url: 'plusUn.php',
            data: 'id='+id,
            success: function(){
                alert('ok');
            }
        });
    });
});

plusUn.php :

<?php
    require 'config.php';
    extract($_POST);
    $r = "UPDATE albums SET click = click+1 WHERE id = $id";
    $q = mysql_query($r);
?>

20 réponses


Dans ton $.ajax après le success ajoute
error : function(data) { alert('ERROR') }
comme ca tu sauras s'il y a une erreur dans ton appel ajax.

Euh le alert() me renvoie ERROR ce qui semble normal car dans on alert() tu as mis "ERROR" si je mets alert(data) dans le error ça me renvoie "Object object"...

C'est qu'il y a un probleme avec ton fichier plusUn.php, peut etre qu'il manque la connexion à la base de donnée dans ce fichier.

Non elle se trouve dans config.php, si je créer une variable $id avec un identifiant présent dans la base de données, en executant le fichier php la mise à jour se fais donc plusUn.php marche parfaitement... Je vois pas d'ou peux venir le problème...

Comme ca, je vois pas trop ce que ca peut etre, si tu utilises firefox, essaye de voir avec firebug ce qui se passe quand tu cliques sur ton lien.

J'utilise Google Chrome, et il y a aussi une console qui affiche les erreurs mais là Chrome tout comme Firebug sous Firefox me renvoie rien... Comme si je n'arrivais pas à rentrée dans la fonction $.ajax()...

ajoute beforeSend:function(data) { alert('toto') } avant le success dans ton $.ajax juste histoire de voir si t'arrives jusqu'à ton $.ajax

Le alert s'affiche bien ;)

Donc tu arrives bien dans ton $.ajax, le problème ne peut venir que du fichier plusun.php

Oui d'accord peut être mais je ne vois pas ou... Etant donner que lorsque je le lance moi même tous marche...

essaye ca dans ton fichier plusun.php
require 'config.php';
$r = "UPDATE albums SET click = click+1 WHERE id = ".$_POST'id'];
$q = mysql_query($r);

après je suis à cours d'idées ^^

Toujours pareille ...

dans plusun.php remplaces $q = mysql_query($r); par echo $r;
et dans $.ajax mets success:function(data) { alert(data) } histoire de voir la tete de la requete

ça ne marche pas, le alert() dans success ne marche pas...

$.ajax({
            type: 'POST',
            url: 'plus.php',
            data: 'name='+id,
            success: function(data){
                alert(data);
            }
        });

require 'config.php';
    $r = "UPDATE albums SET click = click+1 WHERE id = ".$_POST'id'];
    echo $r;
    //$q = mysql_query($r);

C'est un truc incomprehensible...

Par contre ne fais pas attention j'ai changer le nom du fichier php il s'appelle maintenant plus.php... J'ai tous essayé !

si dans data tu as 'name='+id il faut que tu mettes $_POST'name'] dans ton fichier plus.php

oui en effet mais c'étais aussi un autre test... même en changeant le id par name ça ne marchait pas donc ça ne viens pas de là...

Bon ben je vais dormir, ca ira peut etre mieux demain ^^ bonne nuit

Merci d'avoir essayer de m'aider ;)

J'ai pas fait grand chose, bon courage pour trouver d'où vient l'erreur.