2017-06-05 4 views
0

Ich habe ein Problem beim Senden von Post-Inhalt in eine PHP-Datei über Ajax. Ich möchte ein Objekt senden, das die Daten enthält, die in der Datei save.php verwendet werden, und die Antwort so verarbeiten, dass sie in einem Warnfenster erscheint.Ich kann nicht Inhalt auf PHP durch Ajax mit Javascript

var iden = true; 

var object = { 

    'titulo': 'In the mountain', 
    'dest': 'Single of', 
    'edit': true, 
    'previ': 'yes', 
    'iden': iden 
}; 

var xhr = new XMLHttpRequest(); 
xhr.open('POST', "save.php", false); 
xhr.setRequestHeader('Content-Type', 'application/json'); 
xhr.send(object); 

if (xhr.status == 200) { 
    xhr.onload = function() { 
     alert(this.responseText); 
    }; 
} else { 
    alert('error'); 
} 

Das Problem besteht darin, dass beim Versuch, die Daten, die ich diese Nachricht in der Konsole erhalten zu senden:

test.js: 56 [Deprecation] Synchrone XMLHttpRequest auf der Haupt Thread wegen veraltet seine schädliche Auswirkungen auf das Ende Benutzererfahrung. Weitere Informationen finden Sie unter https://xhr.spec.whatwg.org/.

Linie 56 entspricht:

Xhr.open ('POST', 'save.php', false);

Wenn ich die Asynchron-Parameter auf wahr gesetzt, ist es die sonst aus dem bedingten Sprüngen, wenn (xhr.status == 200) und Zeigt die Fehlermeldung an.

Wo könnte das Problem liegen?

Auch sagen, dass mit jquery es perfekt funktioniert, aber ich würde es gerne mit Javascript machen.

Mit jquery:

$.ajax({ 
    url: "save.php", 
    type: "post", 
    data: object 
}).done(function(data) { 
    alert(data); 
}); 

EDIT:

console.log (XHR);

XMLHttpRequest {Readystate: 1, timeout: 0, withCredentials: false, Upload: XMLHttpRequestUpload, onreadystatechange: function ...} onabort: null onerror: null onload: null onloadend: null onLoadStart: null OnProgress: null onreadystatechange: function() onTimeout: null Readystate: 4 Reaktion: "" response: "" response: "" responseURL: "http://localhost/save.php" responseXML: null Status: 200 status: "OK" timeout: 0

+0

Nun, kann ich jQuery sagen dann :). – xsami

+0

Aber ich würde gerne in der Lage sein, es mit Javascript zu tun und die jquery-Bibliothek nicht nur dafür zu verwenden. :/ – PlayerWet

Antwort

3

Versuchen Sie, diese Codezeile zu ändern: xhttp.open("POST", "save.php", false); und setzen Sie den dritten Parameter auf true. Und folgen Sie diesem Beispiel, wenn es funktionieren kann.

var object = { 
 
    'titulo': 'In the mountain', 
 
    'dest': 'Single of', 
 
    'edit': true, 
 
    'previ': 'yes', 
 
    'iden': iden 
 
}; 
 

 
function loadDoc() { 
 
    var xhttp = new XMLHttpRequest(); 
 
    xhttp.onreadystatechange = function() { 
 
    if (this.readyState == 4 && this.status == 200) { 
 
     document.getElementById("demo").innerHTML = 
 
     this.responseText; 
 
    } 
 
    }; 
 
    xhttp.open("POST", "save.php", true); 
 
    xhttp.send(object);
<div id="demo"> 
 
<h2>The XMLHttpRequest Object</h2> 
 
<button type="button" onclick="loadDoc()">Change Content</button> 
 
</div>

+1

Gut, nur eine Anmerkung, dass xhttp.open, standardmäßig hat seinen dritten Parameter als Standard wahr, dann ist nicht notwendig, schreiben Sie den dritten Parameter. [Weitere Informationen] (https: //developer.mozilla.org/es/docs/Web/API/XMLHttpRequest # open()) –

+0

@PabloCesarCordovaMorales danke für die Klärung, und wie die Artikel sagt es wird als Standard wahr müssen Sie nicht hinzufügen – xsami

+0

Ich habe nur alles geändert und es gibt das gleiche Fehler. Es sendet nicht einmal die Daten per Post an die PHP-Datei. Ich habe den ersten Beitrag mit zusätzlichen Informationen von der Konsole bearbeitet. – PlayerWet

Verwandte Themen