2017-06-08 1 views
1

Ich arbeite an dem Versuch, eine Schaltfläche zum Ausführen eines PHP-Skript mit AJAX zu erhalten. Um klar zu sein, ich bin wirklich neu in Java Script und PHP, so dass mein Code völlig falsch sein könnte. Ich denke, dass das Problem in meinem Button-Klick-Code nicht so sehr der Ajax-Code ist. Jede Hilfe ist großButton und AJAX reagiert nicht

<script src="http://code.jquery.com/jquery-latest.js"></script> 
<script type="text/javascript"> 
    $(".submit").click(function myCall() { 
     var subdata = $("#form").serializeArray(); 
     var request = $.ajax({ 
      url: "construct_new.php", 
      type: "GET", 
      data: subdata 
     }); 
     return false; 
    }); 
    </script> 
    <div> 
     <form id="form"> 
      Name of Product: <input type="text" name="productName" value="Enter Here"> 
      <input type="button" name="submit" value="Submit" class="submit"> 
     </form> 
    </div> 
+0

Was ist das Problem? Was funktioniert nicht? Welche Fehler bekommst du? –

+0

hier gibt es kein php, also wenn es ein mögliches Problem dort gibt, sollten Sie diesen Code in Ihre Frage einschließen, und "wie" das verwendet wird und hoffentlich nicht als 'file: ///'. –

+0

Wenn dies keine PHP-Frage ist, muss das Tag entfernt werden. es ist irreführend. –

Antwort

2

Sie benötigen einen DOM ready wrapper um die jQuery, weil es wird ausgeführt, bevor das Element vorhanden ist (oder wird vom Browser gerendert).

Sie können entweder $(function(){ }) oder $(document).ready(function(){ }); verwenden.

$(function(){ 
    $(".submit").click(function myCall() { 
     var subdata = $("#form").serializeArray(); 
     var request = $.ajax({ 
      url: "construct_new.php", 
      type: "GET", 
      data: subdata 
     }); 
     return false; 
    }); 
}); 

In diesem Fall brauchen Sie nicht serializeArray() sondern einfach serialize().

Es wurde kein Erfolg oder eine vollständige Funktion definiert und Sie würden nichts sehen, wenn Sie dies einreichen, es sei denn, Sie sehen natürlich die Registerkarte "Entwicklerkonsole/net".

Die Verwendung des Sendeereignisses eines Formulars wird dem Klickereignis des Absenden-Buttons vorgezogen.

$(function(){ 
    $("#form").submit(function myCall() { 
     var subdata = $(this).serialize(); 
     var request = $.ajax({ 
      url: "construct_new.php", 
      type: "GET", 
      data: subdata, 
      success : function(response){ 
       console.log("success!"); 
      } 
     }); 
     return false; 
    }); 
}); 
+0

Das hat den Button funktioniert dank! Ich bekomme jetzt einen anderen Fehler, ich werde jetzt die Fehler beheben und zurückkommen, wenn ich wieder ratlos bin. Nochmals vielen Dank! –

+0

Wenn meine PHP-Datei Sitzungsvariablen erstellt und verwendet, müsste session_start() sowohl in der Originalseite als auch im PHP-Skript oder nur im Skript enthalten sein? –

+1

session_start() muss in jedem PHP sein, das in der Sitzung lesen oder schreiben muss. – MrCode

0

in einem Dokument bereit, wie dies Setzen Sie Ihre jQuery, und verhindern, dass die Standardaktion (um das Formular abschicken):

<script type="text/javascript"> 
    $(document).ready(function(){ 
      $(".submit").click(function(e) { 
       e.preventDefault(); 
       var subdata = $("#form").serializeArray(); 
       $.get("construct_new.php",{data: subdata}, function(){ 
        console.log(data); // whatever returned by php 
       }); 
      }); 
     }); 
    </script> 

Dokument bereit stellt sicher, Seite alles fertig geladen ist. e.preventDefault() stoppt die Standardaktion (für ein Formular, eine Submission, für ein a-Tag, dem Link folgend).