我现在遇到一个问题,就是发送一个JS对象到PHP,我发现这应该通过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;
哪里出了问题和/或如何更好地解决此问题?
发布于 2018-09-04 06:03:38
你做错了两件事。
JSON
xmlhttp.send(JSON.stringify({newTransaction}));
。相反,您发送的是对象的默认字符串表示:"[object Object]"
,这是没有帮助的。发布于 2018-09-04 05:55:57
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个图
receiving
echo var_dump($_POST);die();
查看你到底在使用什么插件来执行ajax调用,如jQuery、axios等,这将为你提供更好地处理请求和响应的工具。https://stackoverflow.com/questions/52156348
复制相似问题