jQuery AJAX aufrufen, PHP Klasse Funktion

Schrieb ich eine Benutzer-Aktion-Analyse, aber kann ich nicht ausführen, mein insert into – Anweisung. Ich habe versucht alle Vorschläge-stack kann aber nicht herausfinden, mein Fehler, ich bekommen nicht einmal einen Fehler: es läuft durch ohne Ausführung der Anweisung. Ich habe auch eine Verbindung von php – das funktioniert gut, also der Fehler ist nicht da. Ich möchte legen Sie die action var später, aber zuerst muss ich die Funktion aufrufen. Also was ist falsch mit meinem Wunsch-oder php-Funktion?

jQuery

$( document ).ready(function() {
  var action = '';
  document.addEventListener('click', function(e) {
    e = e || window.event;
    e = e.target || e.srcElement;
    if (e.nodeName === 'SECTION') {
      action = e.id;
      updateAction();
    }
  }, false);

  function updateAction() {
    $.ajax({
      type: "POST",
      url: '../actions/userAction.php',
      data: {action: 'test'},
      success: function(){
        console.log(action);
      }
    });
  }
});

PHP

<?php
class userAction
{
  /* User Action */
  public function updateAction(){
    if(isset($_POST['action']) && !empty($_POST['action'])) {
      $db = getDB();
      $st = $db->prepare("INSERT INTO user_analysis (action) VALUES ('bla') where userID = 1945");
      $st->execute();
      $db = null;
      $_SESSION['uid']=$uid;
      return true;
    }    else
    {
      return false;
    }
  }
}
?>
  • was ist die Frage?
  • warum kann ich nicht aufrufen, meine php-Funktion, die er sich nicht einfügen in die db
  • Überprüfen Sie zunächst, ob Sie die Eingabe updateAction() in dieser Funktion? wenn die Eingabe dann check sind Sie immer Wert in der post oder nicht. Und auch die Abfrage falsch ist
  • INSERT Befehl kann nicht WHERE – Klausel. WENN Sie die Aktualisierung eines Datensatzes, verwenden Sie UPDATE
  • Pankaj ja das ist der Fehler denke ich, ich kann nicht geben Sie die Funktion ein und erhalte einen syntax-Fehler in den Kommentar, hier mein ganzer code link
  • Wo rufst du die PHP-Funktion updateAction()?
  • Versuchen Sie es mit method:"POST" in Ihrem ajax kann dies helfen

InformationsquelleAutor mY777 | 2017-06-16

 

3 Replies
  1. 1

    Wo nennst du updateAction() Methode? Ich nehme an, Sie nicht. Dann, warum Sie erwarten, dass es ausgeführt wird? Sie haben mindestens 3 Möglichkeiten, damit umzugehen.


    1. Die Methode static und rufen Sie es ohne Instanziierung einer Klasse

    Wenn Sie nicht aus irgendeinem Grund zu konstruieren, die ein Objekt der Klasse, dann rufen Sie Ihre Methode, ohne es zu tun. Fügen Sie einfach diese Zeile des Codes nach der Klassendefinition:

    userAction::updateAction()

    Diese Weise rufen Sie die Methode, die mit Ihren POST-Anfrage.

    2. Instanziieren Sie die Klasse und rufen Sie dann die Methode

    Die gleiche Geschichte wie oben. Der Unterschied hier ist, um zu konstruieren ein Objekt zuerst:

    $ua = new userAction();
    $ua->updateAction();

    3. (die einfachste) loszuwerden, die Klasse und Methode

    Als der Titel vermuten lässt. Entfernen Sie gesamte code der Klasse und lassen Sie nur die Körper Ihrer Methode. Wie diese:

    if(isset($_POST['action']) && !empty($_POST['action'])) {
       $db = getDB();
       $st = $db->prepare("INSERT INTO user_analysis (action) VALUES ('bla') where userID = 1945");
       $st->execute();
       $db = null;
       $_SESSION['uid']=$uid;
    
       return true;
    } else {
       return false;
    }

    Sollte dies der gesamte Inhalt der Datei: eine Bedingung.

    BTW

    1. Ihre Abfrage ist nicht gültig. Wenn Sie möchten, eine Zeile zu AKTUALISIEREN, die Sie verwenden müssen UPDATE Anweisung, nicht INSERT

    2. Ich würde vorschlagen, Sie rufen Ihre Klasse UserAction (Großbuchstaben). Nur um es vereinheitlicht und intuitiver

    3. Warum mischst du jQuery mit VanillaJS? Sie verwenden jQuery und binden eine Veranstaltung mit klarem JS. Machen es die semantische und entscheiden, wenn Sie jQuery verwenden oder nicht.

    jQuery-Weg:

    var action = '';
    $(document).on('click', function(e) {
      e = e || window.event;
      e = e.target || e.srcElement;
      if (e.nodeName === 'SECTION') {
        action = e.id;
        updateAction();
      }
    });

    Das ist alles. Ich hoffe ich konnte helfen

  2. 0

    Müssen Sie UPDATE statt INSERT. Versuchen Sie, diese unter code:

    UPDATE user_analysis SET action = 'bla' WHERE id = 1945
    • leider Nein , das problem ist, bekomme keine Fehlermeldung wenn ich das Debuggen, aber ich denke, es ist ein syntax-Fehler , der ajax-Aufruf ist richtig oder ?
  3. 0
    if(isset($_POST['action']) && !empty($_POST['action'])) {     
      echo $_POST['action'];
    }

    echo den Wert $_POST['action'] im inneren if-Schleife…Wenn die nicht immer versuchen, ändern Sie den Typ: „POST„, zu „GET„,

    • lösen Sie die syntax-Fehler, und ändern Sie den Typ BEKOMMEN
    • Ich nehme an, Sie vergaß ;

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.