javascript - 通过 XmlHttpRequest 将数据从 JS 传递到 PHP
问题描述
我现在遇到一个问题,其中包括将一个 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));
}
简短描述:在这个函数中,我正在生成一个对象,然后通过XmlHttpRequest
使用POST
请求发送到 PHP,仅此而已,在 PHP 端有一个变量可以捕获该请求并回显它。这是代码:
$newTransaction = $_POST['newTransaction'];
echo $newTransaction;
出了什么问题和/或应该如何更好地解决这个问题?
解决方案
你做错了两件事。
- 在发送对象之前,您不会将对象转换为 JSON
xmlhttp.send(JSON.stringify({newTransaction}));
:. 相反,您发送的是对象的默认字符串表示:"[object Object]"
这没有帮助。 - 您的 PHP 期望接收 URL 编码或 Multipart 表单数据。它不希望收到 JSON。看到这个答案
推荐阅读
- windows - 错误:找不到本机静态库`ssl`,可能缺少-L标志?在 Windows 上
- javascript - 使用 OracleDB 更改 Knex.js 的权限?
- hibernate - 从 Hibernate Grails 中选择数据库
- python - 传输到 JSON 文件
- kotlin - Kotlin 中简化链表实现的想法
- windows - Windows 注册表导出文件的格式
- json - 正则表达式模式的 Composer Json 验证错误 ^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{ 0,2})[a-z0-9]+)*$
- laravel - 使用 guzzle 发送请求时出现 cURL 错误 6
- javascript - Javascript 与 console.log 混淆 - 初学者 Q
- android - Does FusedLocationProviderClient need to initialize? location often null