如何将 JavaScript 数组作为参数传递给 URL 并在 PHP 中捕获它?
How to pass a JavaScript array as parameter to URL and catch it in PHP?
我在 JS 中有一个数组,我试图将它作为参数传递给 URL 并在 PHP 中捕获它,但我无法理解如何去做:
var trafficFilterHolder = ["roadworks","snow","blocking"];
var filters = encodeURI(JSON.stringify(trafficFilterHolder));
仅供参考:我正在使用 windows.fetch 发帖。
在PHP中:
$trafficFilters = $_GET["trafficFilters"];
$obj = json_decode($trafficFilters);
var_dump($obj);
尝试使用 ajax 并传递该数组并检索 PHP 末尾的值。
var 过滤器 = encodeURI(JSON.stringify(trafficFilterHolder));
$.ajax({
输入:“POST”,
url: "test.php",
数据:{数据:过滤器},
缓存:错误,
success: function(){
alert("OK");
}
});
很简单,你用ajax将这些数据传递给php,对吗?
首先,您错误地创建了 javascript 数组:
var trafficFilterHolder = [0: "roadworks", 1: "snow", 2: "blocking"];
不要使用方括号创建带键的数组,而是使用这种格式:
var trafficFilterHolder = {0: "roadworks", 1: "snow", 2: "blocking"};
现在,在 ajax 中,只需在 data
中添加数组:
$.ajax({
data: { trafficFilters: trafficFilterHolder }
});
对服务器的所有请求都作为http请求执行。有两种类型的 HTTP 请求 - GET 和 POST.
https://www.w3schools.com/tags/ref_httpmethods.asp
您所描述的称为 GET 请求。对于 GET 请求,参数通过地址栏传递。要发出 http 请求,您有两种选择。
直接HTTP GET请求。
为此,您只需使用
打开一个新页面
window.location.href = 'http://your_site.com/file.php?name1=value1&name2=value2'
这将在您的浏览器中打开一个新页面并传递带有您的参数的请求。
- Ajax HTTP GET 请求。
您在这里有很多选择:
- 使用 xmlHttpRequest 对象的老式方法
- 带有承诺的现代提取API
- 第三方库,如jQuery.ajax等
AJAX 请求可以在不更新页面的情况下从服务器发送和接收信息(在 GET 或 POST 请求中)。之后,可以根据需要使用 javascript 应用程序管理收到的结果。
希望,它能让你更清楚。您可以在 google 中搜索所有这些技术。这就是前端和后端交换数据的方式。
您正在使用 fetch() 而不是 ajax 将数据传递给 php,因此我对 fetch() 执行相同操作的第一个答案的替代方案是:
var trafficFilterHolder = ["roadworks","snow","blocking"];
var trafficFilterHolderJoin = trafficFilterHolder.join(); // comma-separeted format => "roadworks,snow,blocking"
现在将 trafficFilterHolderJoin
变量添加到 fetch() 的 URL 的 traffic
查询中,例如:
fetch('script.php?traffic=' + trafficFilterHolderJoin)
然后在您的 php 脚本文件中,您将使用 explode
函数将逗号分隔格式转换为 php 数组格式:
$traffic = explode(",", $_GET['traffic']);
我在 JS 中有一个数组,我试图将它作为参数传递给 URL 并在 PHP 中捕获它,但我无法理解如何去做:
var trafficFilterHolder = ["roadworks","snow","blocking"];
var filters = encodeURI(JSON.stringify(trafficFilterHolder));
仅供参考:我正在使用 windows.fetch 发帖。
在PHP中:
$trafficFilters = $_GET["trafficFilters"];
$obj = json_decode($trafficFilters);
var_dump($obj);
尝试使用 ajax 并传递该数组并检索 PHP 末尾的值。
var 过滤器 = encodeURI(JSON.stringify(trafficFilterHolder));
$.ajax({ 输入:“POST”, url: "test.php", 数据:{数据:过滤器}, 缓存:错误,
success: function(){
alert("OK");
}
});
很简单,你用ajax将这些数据传递给php,对吗?
首先,您错误地创建了 javascript 数组:
var trafficFilterHolder = [0: "roadworks", 1: "snow", 2: "blocking"];
不要使用方括号创建带键的数组,而是使用这种格式:
var trafficFilterHolder = {0: "roadworks", 1: "snow", 2: "blocking"};
现在,在 ajax 中,只需在 data
中添加数组:
$.ajax({
data: { trafficFilters: trafficFilterHolder }
});
对服务器的所有请求都作为http请求执行。有两种类型的 HTTP 请求 - GET 和 POST.
https://www.w3schools.com/tags/ref_httpmethods.asp
您所描述的称为 GET 请求。对于 GET 请求,参数通过地址栏传递。要发出 http 请求,您有两种选择。
直接HTTP GET请求。 为此,您只需使用
打开一个新页面window.location.href = 'http://your_site.com/file.php?name1=value1&name2=value2'
这将在您的浏览器中打开一个新页面并传递带有您的参数的请求。
- Ajax HTTP GET 请求。 您在这里有很多选择:
- 使用 xmlHttpRequest 对象的老式方法
- 带有承诺的现代提取API
- 第三方库,如jQuery.ajax等
AJAX 请求可以在不更新页面的情况下从服务器发送和接收信息(在 GET 或 POST 请求中)。之后,可以根据需要使用 javascript 应用程序管理收到的结果。
希望,它能让你更清楚。您可以在 google 中搜索所有这些技术。这就是前端和后端交换数据的方式。
您正在使用 fetch() 而不是 ajax 将数据传递给 php,因此我对 fetch() 执行相同操作的第一个答案的替代方案是:
var trafficFilterHolder = ["roadworks","snow","blocking"];
var trafficFilterHolderJoin = trafficFilterHolder.join(); // comma-separeted format => "roadworks,snow,blocking"
现在将 trafficFilterHolderJoin
变量添加到 fetch() 的 URL 的 traffic
查询中,例如:
fetch('script.php?traffic=' + trafficFilterHolderJoin)
然后在您的 php 脚本文件中,您将使用 explode
函数将逗号分隔格式转换为 php 数组格式:
$traffic = explode(",", $_GET['traffic']);