2017-02-19 4 views
-2

Ich kann nicht scheinen zu verstehen, wie Daten von meinem clientseitige HTML meinen Server-Seite PHP senden (die bereits bedeutet, dass ihre nicht im selben Ordner und werden nicht auf dem Server ausgeführt wird) und nur erhalten a Benachrichtigung über eine nicht identifizierte Variable und einen schwerwiegenden Fehler: Kann nicht auf eine leere Eigenschaft zugreifen.Wie kann ich HTML-Daten mit JSON an PHP senden?

Ich versuchte die Methoden in W3Schools und immer noch kein Glück. Und nur um sicher zu sein habe ich versucht, es zu kopieren. Immer noch das gleiche.

Also meine Frage ist: Wie kann ich diese einfachen Client-seitige HTML/JavaScript-Daten senden: -

<script> 
function sender(){ 
obj = "tblname"; 
// how to send that data to the php server-side. 
} 
</script> 

Zu diesem PHP: -

<?php 
header("Content-Type: application/json; charset=UTF-8"); 
$obj = json_decode($_GET["x"], false); 

$conn = new mysqli("localhost", "root", "", "mydb"); 
$result = $conn->query("SELECT * FROM ".$objData); 
$outp = array(); 
$outp = $result->fetch_all(MYSQLI_ASSOC); 

echo json_encode($outp); 
?> 

JSON verwenden?

Wenn jemand könnte erarbeiten und mir eine Probe zeigen, wäre es toll.

Nochmals, ich bin ein Anfänger/Neuling in der Verwendung von JSON und habe keine langfristigen Hintergrund (ich begann gerade wie vor einer Woche und das hatte schon viele Probleme) und bin völlig ahnungslos, wenn es um diese Art von Client geht -zu-Server-Kommunikation.

Ich brauche nur den einfachen Absender-Code (aus dem JavaScript) und den Empfangscode (aus dem PHP) eine oder zwei Zeilen tun; mit einer kurzen Beschreibung, wie sie funktionieren.

Ich verwende Windows 7, Wamp3.0.6 und Chrome.

PS: Ich habe das von W3Schools. Ja, es hat nicht funktioniert. Und bitte sei nicht vage. Vielen Dank!

+0

up ein wenig warten zurück. Woher kommt die Variable 'obj =" tblname ";' kommen? Ist es von einem HTML-Formular? Stört es Sie, wenn die Seite aktualisiert wird? Oder möchten Sie die Daten über AJAX senden? JSON kommt nicht wirklich dazu, da Sie nur eine Zeichenfolge senden ... – Juned

+0

Nein, nicht gut, wenn die Seite aktualisiert wird, was zu einem Verlust von Kurzzeitdaten führen könnte. Mir geht es gut mit AJAX, solange es erklärt wird. – Arkonsol

+0

Oder posten Sie Ihren JS-Versuch und jemand wird Ihnen helfen. – Juned

Antwort

0

-_- Jeder scheint zu versuchen, und über Kompliziert und darüber nachdenken, wenn die einfache Antwort wäre dieser Code gewesen wäre.

function caller(){ 
myData = "myTbl"; 
var xmlhttp = new XMLHttpRequest(); 
xmlhttp.open("GET", "bring.php?q="+myData,true); //sends myData to the php. You can change the GET to POST if ya want to be extra safe but either way, the php won't care anyways. 
xmlhttp.send(); 
} 

Der obige Code ist vom Client-Server und sendet die Daten von myData auf diese Server-Seite PHP.

<?php 
$q = $_REQUEST['q']; //the receiver of the data. You can use explode() to separate them into pieces and turn it into a jigsaw puzzle if ya want. 

$servername = "localhost"; 
$username = "root"; 
$password = ""; 
$dbname = "Mydb"; 

// Create connection 
$conn = new mysqli($servername, $username, $password, $dbname); 
// Check connection 
if ($conn->connect_error) { 
    die("Connection failed: " . $conn->connect_error); 
} // how to connect is not important in my question but it is important for you to be able to connect to the database. 

// now for the important stuff 

$sql = "SELECT * FROM ".$q." "; // I had to extend it with a space because sometimes it's misunderstood. 
$result = mysqli_query($conn, $sql) or die("Error in Selecting " . mysqli_error($conn)); 
$outp = array(); 

while($row=mysqli_fetch_assoc($result)) 
{ 
    $outp[] = $row; 
} 
    echo json_encode($outp); //sends the data gathered from the database table back to the client as a JSON file, and you are done. 
?> 

Es dauerte 6 Stunden Studium mit viel Internet-Surfen und Studien und Fehler.

Und wie ich schon sagte; Ich bin ein Neuling bei JSON, also ist es ziemlich klar, dass ich AJAX nicht verstehe. Wie, überhaupt.

Es tut mir leid, wenn ya denke ich wie ein Idiot klingen, aber seien wir ehrlich, fast alle von uns waren Idioten an einem Punkt während der Programmierung zu lernen versuchen. Ich bin überrascht, warum manche Leute hier einfach unhöflich sind. Vielen Dank. Irgendwie bin ich nicht wirklich überrascht, dass sie das hier auch mögen. Macht mein soziales Internet-Leben ein bisschen langweilig.

beim nächsten Mal tut mir also einen Gefallen und stattdessen total unhöflich zu sein, nur um die Frage zu beantworten, wenn Sie eine haben.

+0

Nur damit Sie wissen, was Sie hier haben, ist eine grundlegende AJAX-Anfrage. Es gibt einige interessante Cross-Browser-Probleme mit AJAX, daher wird empfohlen, eine Bibliothek zu verwenden, um dem entgegenzuwirken. [Jquery] (http://learn.jquery.com/ajax/) ist eine beliebte Option, aber es ist nicht die einzige. Siehe auch https://www.sitepoint.com/introduction-jquery-shorthand-ajax-methods/ und https://www.sitepoint.com/use-jquerys-ajax-function/ –

+0

Eigentlich habe ich versucht, die Nachforschungen anstellen, aber ich irgendwie enden immer mit einigen fatalen Fehlern. Versuchte die Links, die du mir geschickt hast (eigentlich bevor ich diese Frage überhaupt gestellt habe). Und wie es in meiner Frage heißt, habe ich immer die zwei Fehler. Ich musste herausfinden, warum es mit diesen Methoden nicht funktionieren würde. Darum habe ich gefragt.Und das ist nur ein Teil meines Codes, denn ich musste ein paar mehr verwenden, um eine Runde darüber zu haben. Ich denke, es ist etwas falsch mit meinem WAMP-Server. Hölle, es wird nicht einmal laufen, wenn ich keine Internetverbindung habe. 0_0 ja ich habe die Uni & Rei Methode ausprobiert. immer noch das gleiche. – Arkonsol

0

Sie können Ajax-Aufruf Form Client-Seite Server-Datei vornehmen und Daten mit get-Methode senden

// Using the core $.ajax() method 
$.ajax({ 

    // The URL for the request 
    url: "path of your php file", 

    // The data to send (will be converted to a query string) 
    data: { 
     id: 123 
    }, 

    // Whether this is a POST or GET request 
    type: "GET", 

    // The type of data we expect back 
    dataType : "json", 
}) 
    // Code to run if the request succeeds (is done); 
    // The response is passed to the function 
    .done(function(json) { 
    }) 
    // Code to run if the request fails; the raw request and 
    // status codes are passed to the function 
    .fail(function(xhr, status, errorThrown) { 
    alert("Sorry, there was a problem!"); 

    }) 
    // Code to run regardless of success or failure; 
    .always(function(xhr, status) { 
    alert("The request is complete!"); 
    }) 
+2

Anmerkung diese jQuery als Abhängigkeit erfordert ... nicht – charlietfl

+0

erwähnt tatsächlich i bereits gemeistert fast die von PHP-Bit empfangen json mit meinem Problem nur auf PHP Bit das Senden wird. – Arkonsol

-2

Sie ein Objekt nicht über HTTP übertragen kann, wie es ist. Sie müssen es in einen String umwandeln können Sie den Körper Ihres HTTP-POST Antrag gestellt in:

try { 
    var jsonString = JSON.stringify(anyJsonObject); 
    //send it to the server 
} catch(ex) { 
    //handle error if anyJsonObject wasn't a valid JSON object. Remember: Not every JS object is a JSON object too. 
} 

Der umgekehrte Weg ist:

try { 
    var jsonObject = JSON.parse(anyJsonString); 
} catch(ex) { 
    //handle error if anyJsonString was malformed 
} 
+0

Ich weiß schon, wie das geht, es ist nicht wirklich eine Antwort auf meine Frage – Arkonsol

+0

Oh, und ich beantwortete meine Frage. Es hilft Ihnen dabei, die Idee Ihres * zu lösen. "Sie können ein Objekt nicht über HTTP übertragen, wie es ist" * Teil. Sie können das '$ _REQUEST' mit Hilfe von' xmlhttp' verwenden. – Arkonsol

Verwandte Themen