2009-06-27 12 views
0

Hé les gars, je suis très nouveau pour AJAX et et de travailler sur un script de notation, mais je veux être en mesure de transmettre plusieurs valeurs de retour dans ma fonction ajax:Obtenir plusieurs valeurs par le biais d'une requête AJAX

En ce moment, il exécute un script php appelé ratings, où il prend la valeur totale des votes/votes et le multiplie par la largeur de chaque début pour obtenir une note actuelle précise. Ce que j'aimerais faire, c'est aussi de renvoyer le nombre de votes pour que je puisse les afficher. Je sais comment je pourrais faire cela en faisant une autre fonction mais cela semble redondant et pas très efficace.

Ma question est, est-il possible de repasser non seulement la largeur (valeur/votes * 22) pour ma boîte de notation, mais aussi le nombre total de votes dans une requête. Si ce n'est pas la meilleure question serait-il préférable de repasser une chaîne dans jquery qui a déjà la valeur & votes, et faire le calcul de la largeur avec le script java?

$(document).ready(function() { 
    getRating(); 
    function getRating(){ 
    $.ajax({ 
    type: "GET", 
    url: "../includes/rating.php", 
    data: "action=get&bookid="+$("#current").attr("value"), 
    cache: false, 
    async: false, 
    success: function($rating) { 
    $("#current").css({ width: "" + $rating }); 
    }, 
    error: function(result) { 
    alert("Error"); 
    } 

}); 
} 

Merci!

Répondre

3

Oui, vous pouvez renvoyer les deux valeurs. Il suffit d'envoyer JSON en utilisant json_encode au lieu de texte.

$(document).ready(function() { 
    getRating(); 
    function getRating(){ 
    $.ajax({ 
    type: "GET", 
    dataType: 'json', 
    url: "../includes/rating.php", 
    data: "action=get&bookid="+$("#current").attr("value"), 
    cache: false, 
    async: false, 
    success: function(data) { 
     $("#current").css({ width: "" + data.rating }); 
     $("#votes").html(data.votes); 
    }, 
    error: function(result) { 
     alert("Error"); 
    } 

}); 
} 
+0

Parfait. Merci beaucoup! – askon

1

Si votre difficulté à passback plusieurs valeurs dans un rappel, vous pouvez essayer d'insérer un caractère aléatoire (comme un #, quelque chose ne va pas vous utiliser) inbetween les valeurs alors divisées sur le côté serveur. Par exemple.

côté client ...

var callback = value1##value2##value3; 

côté serveur ...

$values = split($callback, "##"); 

$value1 = $values[0]; 
$value2 = $values[1]; 

espoir qui aide ...

+0

Je pense que l'utilisation de JSON serait généralement mieux que de trouver une façon de coder de nombreuses valeurs dans une chaîne – Jonik

1

La largeur est une valeur dérivée basée sur le nombre de votes, je passerais le nombre de votes et ferais le calcul en Javascript.

Questions connexes