2017-05-08 4 views
0

Ich habe eine PHP-Datei auf einem Server, der dynamische Werte von der clientseitigen Verwendung auf einer Webseite nehmen muss, um meine Datenbank abzufragen. Der Benutzer wird auf einen Link klicken, der (ebenso wie er den Benutzer auf eine neue Registerkarte verweist) die Dokumentpositionszeichenfolge übernimmt, mit der der Link verbunden ist. Ich versuche gerade, diese Werte mit jQuery/AJAX und einem XHR-Aufruf an den serverseitigen Code zu übergeben, aber wenn ich es ausführe, scheint es, dass PHP nicht korrekt ausgeführt wird. Hier ist der JavaScript-Code:Übergabe von JavaScript-Werten an PHP-Datei mit XHR-Aufruf

// Clicking the link 
$('a.docs').on('click', function(){ 

    // Getting the values needed for the query from existing table 
    var theData = subtable.row($(this).parents('tr')).data(); 

    // The document string 
    var thedoc = theData[7]; 

    // Pass the document value to the PHP file on the server 
    $.post('https://example.com/TEST/dashboard/change.php', { 
     document: thedoc 
    }); 

    // Make XHR call to execute the PHP file on the server 
    var xhr = new XMLHttpRequest(); 
    xhr.open("GET", "https://example.com/TEST/dashboard/change.php", true); 
    xhr.send(); 
}); 

Wie Sie sehen können, ich versuche, auf dem Server den Wert von thedoc in die Datei zu senden, bevor die GET XHR Anruf. Hier ist das, was PHP-Code auf dem Server nicht:

<?php 
    // The line that grabs the document variable being passed 
    $document = $_POST['document']; 

    // ... MySQL query stuff using $document as parameter... 
?> 

Wenn ich dies zu testen, und klicken Sie auf den Link auf der Webseite, die JavaScript packt das Dokument korrekt Link-Variable, es ist nur die Weitergabe, die nicht funktioniert hat. Irgendwelche Ideen darüber, was ich falsch mache?

+0

Der '$ .post' Anruf sollte das Dokument auf Ihrer Serverseite. Haben Sie versucht, 'console.log'' thedoc' Variable? – jorgonor

+0

Ja und es ist die richtige Variable, die ich an die PHP übergeben muss – Jodo1992

+0

Nun, Ihr PHP-Skript sollte zweimal aufgerufen werden. Zuerst, wenn Sie den '$ .post'-Aufruf und ein anderes Mal in der xhr machen. Der erste sollte den Wert an den Server senden, der zweite sollte nicht. Versuchen Sie, den XHR-Aufruf zu entfernen, da dies keinen Sinn ergibt. – jorgonor

Antwort

1

Ich kann nicht Kommentar :(

ich stimme mit jorgonor1.

Sie führen 2 separate Anfragen an Ihren Server.

Die erste. Sie senden Daten mit JQUERY im Bereich $ .POST (...) an den Server. Und ignorieren Sie die Ergebnisse aus dem Beispielcode.

Dann, zweitens, führen Sie eine saubere Anfrage der generischen Seite mit der xhr-Anfrage.

Wenn Sie $ .post() verwenden, und wollen etwas mit dem Ergebnis aus dem Server versuchen auszuführen:

$.post('https://example.com/TEST/dashboard/change.php', {document: thedoc}, function(result){ 
//do something with the data returned form the server, server response stored in "result" variable 
}); 

Siehe Beispiel auf W3Schools

0

wenn Sie jQuery verwenden möchten, versuchen Sie einfach

let data = form.serialize(); 
$.ajax({ 
    type: "POST", 
    url: url, 
    data: data, 
    success: success, 
    dataType: dataType 
}); 

oder wenn Sie xhr verwenden möchten, müssen Sie die Daten als Schlüssel/Wert-Paar Zeichenfolge senden:

let data = "document=thedoc" 
+0

In Ihrem jQuery-Beispiel würde 'thedoc' in' data' oder 'dataType' gehen – Jodo1992

Verwandte Themen