javascript - 如何向 PHP 后端发出带有参数的 AJAX POST 请求?
问题描述
这是对标记为重复的先前问题的更新(如何向 PHP 发送带有参数的 AJAX POST 请求?)
我正在向 PHP 后端发送 AJAX 请求。
发出和接收请求的 Javascript 函数:
var httpRequest;
function makeRequest(){
httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = receiveResponse;
httpRequest.open("POST", "ajax_handler.php", true);
httpRequest.setRequestHeader('Content-Type', 'application/json');
httpRequest.send(JSON.stringify({key:"value"}));
}
function receiveResponse() {
if (httpRequest.readyState === XMLHttpRequest.DONE) {
if (httpRequest.status === 200) {
console.log(httpRequest.responseText);
}
}
}
ajax_handler.php
处理请求的 PHP 后端:
<?php
$data = file_get_contents('php://input');
echo $data;
?>
我原来的帖子被标记为这个问题的副本。该页面没有明确的示例,尽管我能够推断出我应该使用file_get_contents('php://input')
而不是$_POST
在 PHP 后端中使用,如图所示。
使用显示的代码,console.log(httpRequest.responseText)
在接收函数中将日志记录{"key":"value"}
到控制台。但是,如果我尝试将其解释为 PHP 后端中的数组,则使用
<?php
$data = file_get_contents('php://input');
echo $data["key"];
?>
响应记录{
到控制台而不是预期的value
.
除了使用,链接副本'php://input'
中的几个响应也使用PHP 后端中的函数。json_decode()
但是,如果我在后端包含此功能,则为
<?php
$data = json_decode(file_get_contents('php://input'));
echo $data;
?>
整个 AJAX 调用中断。它被设置为在单击窗口时触发,但在包含 之后json_decode()
,单击窗口时不会发生任何事情,调用不会返回任何内容,并且不会将任何内容记录到控制台。
如果没有示例,我很难判断我是否在执行 AJAX 循环错误,或者我的代码中的其他地方是否存在不同的问题。所以,为了所有神圣的事物,请有人将我发布或链接到一个独立的示例,展示如何制作、处理和接收带有 PHP 后端参数的 AJAX 调用? 令人难以理解的是,这在互联网上的某个地方还不存在,但我一直在搜索和询问几天,但我在任何地方都找不到一个例子。这没有 jQuery。
先感谢您。
解决方案
创建一个mcve并逐个调试。
<?php
$data = json_decode('{ "test": 123 }');
echo $data;
将输出:
可恢复的致命错误:第 4 行 /...../test.php 中的 stdClass 类对象无法转换为字符串
您有一个表示从 JSON 解码的数据的对象。您需要回应其中有用的部分。例如
<?php
$data = json_decode('{ "test": 123 }');
echo $data->test;
推荐阅读
- typescript - 从属性为可选的类型中获取类型为 K 的属性
- javascript - 如何在 Google Chrome 扩展程序中编码 GIF?
- flutter - 为什么这个闪屏代码不能正常工作?
- python - Python中3维Numpy ndarray中的高级索引
- for-loop - 批量将子文件夹中的所有文件复制到目标位置,而无需重新创建子文件夹
- python - discord.py 挂起连接到语音 heroku
- r - 从 matchPattern 中提取值
- linux - IPv6 示例程序在 connect() 上失败
- android - 从活动传递到片段时为空包
- python - 当我在 Django 中运行我的服务器时,我得到模板不存在