Sending query string parameters to php via fetch not working(通过FETCH将查询字符串参数发送到php不起作用)
问题描述
我只想通过Fetch API向(同一页)php脚本发送一个查询字符串参数。这样做的目的是,我可以将存在于Java脚本中的变量存储在php$_SESSION变量中。但它不起作用。
背景:我编写了一些检测多个单选按钮中哪个单选按钮被打开的脚本。此单选按钮的值存储我希望作为SSI从数据库加载的PHP模板的名称。
因此,我并不是真的想在Java脚本中操作响应,我只是希望能够将变量(在本例中是硬编码的,但打算来自一个Java脚本变量)传递给PHP$_GET或$_POST。
感谢到目前为止回复的人。
代码如下:
<?php
if(isset ($_REQUEST['name'])){
echo "The name param is received!";
}
else {
echo "The name param is NOT received!";
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Home</title>
</head>
<body>
<script>
fetch('index.php?name=matt');
</script>
</body>
</html>
推荐答案
我建议您查看MDN Fetch() API documentation。您的fetch()
缺少其标头、方法、响应解析(第一个.then()
)和结果解析(第二个.then()
)。
但是,您可能不想使用fetch()
。Fetch将页面结果返回给JavaScript,而不是用户。从您使用它的方式来看,您似乎只想让用户直接转到该页面(在这种情况下,只需<a href='?name=matt'>Click Me</a>
)。
归根结底,我认为您需要了解fetch()
的目的是将数据发送到JS环境,而不是为用户重新加载页面。无论如何,下面是您的调用在工作时的样子...
<script>
fetch('index.php?name=matt', {
'headers': {
'Accept': 'text/html',
'Content-Type': 'text/html'
},
'method':'GET',
'body':'',
})
.then((response) => response.text())
.then((responseText)=>{
console.info("Response?");
console.info(responseText); // result: "The name param is received!...(and the rest of your page)
});
</script>
如果您想让Fetch()以可用的方式将$_GET
和/或$_POST
变量返回给JS,那么欢迎JSON和json_encode()
进入您的内心。
创建一个新的PHP脚本userdata.php
,并将其编码为...
<?php
header('Content-Type: application/json'); // send JSON header, let page know it's JSON
print(json_encode(['name':$_POST['name']])); // get the name
?>
使用此选项,将您的上述JS更新为...
fetch('http://www.example.com/your/script.php', {
'headers': {
'Accept': 'application/json',
'Content-Type': 'application/json'
},
'method':'POST',
'body':JSON.stringify({'name':'matt'}),
})
.then((response) => response.json())
.then((responseJson)=>{
console.info("Response?");
console.info(responseJson);
});
注意上面所做的更改:我让它使用POST方法,这为您提供了一种更简洁的发送数据的方式(即使用body
,而不是像'?...'
那样将其附加到URL上)。您的回复也是.json()
‘d’,而不是.text()
d。
这篇关于通过FETCH将查询字符串参数发送到php不起作用的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:通过FETCH将查询字符串参数发送到php不起作用
基础教程推荐
- XAMPP 服务器不加载 CSS 文件 2022-01-01
- 通过 PHP SoapClient 请求发送原始 XML 2021-01-01
- 超薄框架REST服务两次获得输出 2022-01-01
- 在 PHP 中强制下载文件 - 在 Joomla 框架内 2022-01-01
- mysqli_insert_id 是否有可能在高流量应用程序中返回 2021-01-01
- WooCommerce 中选定产品类别的自定义产品价格后缀 2021-01-01
- 如何在 PHP 中的请求之间持久化对象 2022-01-01
- Libpuzzle 索引数百万张图片? 2022-01-01
- 在多维数组中查找最大值 2021-01-01
- 在 Woocommerce 中根据运输方式和付款方式添加费用 2021-01-01