如何将 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 请求,您有两种选择。

  1. 直接HTTP GET请求。 为此,您只需使用

    打开一个新页面

    window.location.href = 'http://your_site.com/file.php?name1=value1&name2=value2'

这将在您的浏览器中打开一个新页面并传递带有您的参数的请求。

  1. 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']);