[英]Pass data from JS to PHP via XmlHttpRequest
我現在遇到一個問題,該問題包括向PHP發送一個JS對象,我發現應該通過HtmlHttpRequest
完成,但問題是我是PHP的新手,而且我不理解XmlHttpRequest
工作原理非常好。 我嘗試了不同的方法,但是我發現適合自己的方法不斷返回相同的錯誤。 該代碼將在下面發布,現在關於該問題,我可以執行此請求,但是當我執行此操作時,PHP端會向我返回一條錯誤消息,指出存在未定義的索引。
這是所需的代碼
JS部分:
function createTransaction() {
var xmlhttp = new XMLHttpRequest();
var newTransaction = {"name": document.getElementById('wallets').value}
newTransaction.data = {
"transactionID": document.getElementById('trans-id').value,
"time": document.getElementById('creation-time').value,
"senders": getSenders(),
"receivers": getReceivers(),
"finalSum": setSum()
};
xmlhttp.open('POST', '/admin.php', true);
xmlhttp.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
xmlhttp.onreadystatechange = function () {
if (this.readyState === 4 || this.status === 200) {
console.log(this.responseText); // echo from php
}
};
xmlhttp.send({newTransaction});
console.log(JSON.stringify(newTransaction));
}
簡短說明:在此函數中,我生成一個對象,然后使用POST
請求通過XmlHttpRequest
發送到PHP,就是這樣,在PHP端,有一個變量捕獲該請求並回顯它。 這是代碼:
$newTransaction = $_POST['newTransaction'];
echo $newTransaction;
有什么問題和/或應該如何更好地解決此問題?
您做錯了兩件事。
xmlhttp.send(JSON.stringify({newTransaction}));
。 相反,您發送的是對象的默認字符串表示形式: "[object Object]"
,它沒有幫助。 簡稱XmlHttpRequest
或Ajax
是不會重新加載頁面的請求,通過這種邏輯,您將像在表單中一樣發送POST
請求,當您發送表單時,您將在發送對key : values
您要發送的文件可以說您具有這樣的形式
<input name="transactionID">
<input name="time">
<input name="senders">
<input name="receivers">
<input name="finalSum">
將會在全局$_POST
數組中像這樣接收值
{
"transactionID": "some id",
"time": "some time",
"senders": "some senders",
"receivers": "some receivers",
"finalSum": "final sum"
}
當您發送Ajax請求時,您執行相同的操作,但是沒有inputs html
,當您發送這樣的數據時
newTransaction.data = {
"transactionID": document.getElementById('trans-id').value,
"time": document.getElementById('creation-time').value,
"senders": getSenders(),
"receivers": getReceivers(),
"finalSum": setSum()
};
xmlhttp.send({newTransaction});
在您的admin.php
您將收到類似
{
"data" : {
{
"transactionID": "some id",
"time": "some time",
"senders": "some senders",
"receivers": "some receivers",
"finalSum": "final sum"
}
}
}
我建議你2個
echo var_dump($_POST);die();
看看你到底收到了什么
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.