2017-06-05 119 views
0

我通過ajax發送內容到php文件時遇到問題。我的意圖是發送一個包含將在save.php文件中使用的數據的對象,並且它必須處理響應,以便它顯示在警報窗口中。我無法通過ajax將內容發佈到php

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'); 
} 

的問題是,試圖發送數據時,我得到了控制檯此消息:

Test.js:56 [棄用]同步XMLHttpRequest的主 線程已被棄用,因爲它的不利影響到用戶體驗的最終結果。如需更多幫助,請查詢https://xhr.spec.whatwg.org/。 56

線對應於:

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

如果我將async參數設置爲,它跳躍的從其他條件,如果(xhr.status == 200)和顯示錯誤警報。

問題在哪裏?

也可以說,與jQuery它完美的作品,但我想用Javascript來做到這一點。

用jQuery:

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

編輯:

的console.log(XHR);

的XMLHttpRequest {readyState的:1,超時:0,withCredentials:假的, 上傳:XMLHttpRequestUpload,的onreadystatechange:函數...} onabort: 空的onerror:空的onload:空onloadend:空onloadstart:空 onprogress:空的onreadystatechange:函數()ontimeout:空 readyState的:4響應: 「」 responseText的: 「」 的responseType: 「」 responseURL: 「http://localhost/save.php」 responseXML的:空狀態: 200狀態文本: 「OK」 超時:0

+0

好吧,我可以說,使用jQuery呢:)。 – xsami

+0

但我希望能夠用javascript來做到這一點,而不是僅僅爲此使用jquery庫。 :/ – PlayerWet

回答

3

嘗試更改此行代碼:xhttp.open("POST", "save.php", false);並將第三個參數設置爲true。如果它可以工作,請遵循這個例子。

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

好,只有一個註釋,即xhttp.open,默認情況下它的第三個參數是默認的true,那麼不需要寫第三個參數。 [更多信息](https://developer.mozilla。org/es/docs/Web/API/XMLHttpRequest#open()) –

+0

@PabloCesarCordovaMorales感謝澄清,並且文章說這將是真實的默認你不需要添加它 – xsami

+0

我只是改變了一切,它給出了相同錯誤。它甚至不會將每個帖子的數據發送到php文件。 我已經編輯了第一篇文章,其中包含來自控制檯的附加信息。 – PlayerWet