Ajax-Daten an PHP senden und Daten zurückgeben

Lesezeit: 4 Minuten

Wie kann ich einige Ajax-Daten an die Controller-Funktion senden und zurückerhalten? Denn ich möchte eine Ganzzahl an die Funktion senden und eine andere Ganzzahl erhalten (Gesamtstimmen für das Element, dessen ID gesendet wird), und bei Erfolg möchte ich diese Stimmenzahl wiederholen. Ich weiß nicht, wie ich die “ID” an die Controller-Funktion senden kann. Siehe bitte meinen Code:

//post this integet
the_id = $(this).attr('id'); 

        $.ajax({
            type: "POST",
            data: the_id,
            url: "http://localhost/test/index.php/data/count_votes",
            success: function(){
                //the controller function count_votes returns an integer.
                //echo that with the fade in here.

                }
            });

Benutzer-Avatar
Rafay

 $.ajax({
            type: "POST",
            data: {data:the_id},
            url: "http://localhost/test/index.php/data/count_votes",
            success: function(data){
               //data will contain the vote count echoed by the controller i.e.  
                 "yourVoteCount"
              //then append the result where ever you want like
              $("span#votes_number").html(data); //data will be containing the vote count which you have echoed from the controller

                }
            });

im Steuergerät

$data = $_POST['data'];  //$data will contain the_id
//do some processing
echo "yourVoteCount";

Klärung

ich glaube du verwirrst dich

{data:the_id}

mit

success:function(data){

beide data zu Ihrer eigenen Klarheit anders sind, können Sie es als ändern

success:function(vote_count){
$(span#someId).html(vote_count);

  • Meinten Sie, nachdem ich die ID an die Controller-Funktion gesendet habe, sollte ich einfach innerhalb der Funktion echoen? Ich möchte die $data bei Erfolg mit anzeigen $("span#votes_number").html(number);

    – Billa

    7. Juli 2011 um 20:27 Uhr

  • siehe die $data erhält auf dieser Grundlage die ID, die Sie clientseitig gesendet haben ID Sie werden wahrscheinlich etwas verarbeiten und berechnen total votes dann echo das voteCount die Sie berechnet haben und erhalten es in der success callback dann kannst du dir das anzeigen lassen voteCount Wo immer Sie wollen, werde ich die Antwort ein wenig ändern

    – Rafay

    7. Juli 2011 um 20:33 Uhr

  • Danke, Mann. es funktioniert, aber ich frage mich nur, warum es funktionieren wird, wenn ich echo "yourVoteCount"; in der Nummer im Controller, funktioniert aber nicht, wenn i return yourVoteCount; in diesem fall bekomme ich keine erfolgsdaten. Was ist der Grund? Danke noch einmal.

    – Billa

    7. Juli 2011 um 20:47 Uhr

  • Echo druckt die Ausgabe auf der Seite, die im Browser angezeigt werden soll. Ich bin mir nicht sicher, aber Sie können es versuchen print statt echo … ich selbst bin mir nicht sicher, warum return nicht verwendet werden kann, vielleicht wird es jemand anderes besser erklären.

    – Rafay

    7. Juli 2011 um 20:55 Uhr

Versuchen Sie es für das JS

data: {id: the_id}
...
success: function(data) {
        alert('the server returned ' + data;
    }

und

$the_id = intval($_POST['id']);

in PHP

  • Danke, das ist was ich suche. Ich muss die ID an den Controller senden und der Controller gibt eine andere Ganzzahl ($vote_count) zurück, die ich bei Erfolg posten muss. Aber wenn ich das richtig verstehe, alarmiert Ihr Beispiel die ID, die an den Controller gesendet wird, nicht die Daten vom Controller.

    – Billa

    7. Juli 2011 um 20:34 Uhr

Benutzer-Avatar
Serienwurm

Wie sieht also count_votes aus? Ist es ein Drehbuch? Alles, was Sie von einem Ajax-Aufruf zurückbekommen möchten, kann mit einem einfachen Echo abgerufen werden (natürlich könnten Sie JSON oder XML verwenden, aber für dieses einfache Beispiel müssten Sie nur etwas in count_votes.php ausgeben wie:

$id = $_POST['id'];

function getVotes($id){
    // call your database here
    $query = ("SELECT votes FROM poll WHERE ID = $id");
    $result = @mysql_query($query);
    $row = mysql_fetch_row($result);

    return $row->votes;
}
$votes = getVotes($id);
echo $votes;

Dies ist nur Pseudocode, sollte Ihnen aber eine Idee vermitteln. Was auch immer Sie von count_votes zurückgeben, wird in Ihrem Ajax-Aufruf an “data” zurückgegeben.

  • count_votes ruft einfach die (ganzzahlige) Anzahl der Stimmen aus der DB für die gepostete ID ab. In meiner Ajax-Funktion möchte ich bei Erfolg diese Nummer erhalten, damit ich sie wiederholen kann $("span#votes_number").html(number);

    – Billa

    7. Juli 2011 um 20:25 Uhr


  • Wenn Sie also Ihr Beispiel verwenden, wird der Wert, den Sie von Ihrem “count_votes”-Skript ausgeben, als die “data”-Javascript-Variable interpretiert, also $(“span#votes_number”).html(data);

    – Serienwurm

    7. Juli 2011 um 20:33 Uhr


  • Danke, Mann. Ich frage mich nur, warum es funktioniert, wenn ich die $votes im Controller wiedergebe, aber nicht funktioniert, wenn ich die $votes “zurückgebe”?

    – Billa

    7. Juli 2011 um 20:52 Uhr

  • Die Ajax-Antwort sucht nach einer Art von Daten, die an sie ausgegeben werden. Da PHP serverseitig ausgeführt wird, müssen Sie eine Art Antwort auf den clientseitigen Code “ausgeben”. Nur so erhält er die Ausgabe.

    – Serienwurm

    7. Juli 2011 um 20:54 Uhr

1014950cookie-checkAjax-Daten an PHP senden und Daten zurückgeben

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy