php - 将 Javascript 数组传递给 PHP 文件

标签 php javascript arrays post get

<分区>

所以我知道 Javascript 是客户端,而 PHP 是服务器端,这使事情变得复杂,但我想知道如何去做。

我的 javascript 代码中有一个数组(在 HTML 文件中),当用户点击我的提交按钮时,我希望页面将该数组发送到我的 PHP 页面,然后该页面将获取该日期并将其放入 SQL数据库。

有没有简单的方法来做到这一点?我的数组声明如下 var markers = []; 它只是代码的 javascript 部分中的一个变量。

我已经查看了很多与此相关的其他帖子,但所有解决方案都不适合我需要做的事情,或者需要对我现在可以做的事情进行太多更改。我不太熟悉 AJAX 或 JSON(不确定那是什么)。

我的 Javascript 是:

var markers = [];

function placeMarker(location) {
        var clickedLocation = new google.maps.LatLng(location);
        var name = document.getElementById("checkname").value;
        var description = document.getElementById("description").value;


        var marker = new google.maps.Marker({
            position: location,
            map: map,
            title: name,
            // This may cause a problem when reloading and editing an existing tour
            // url was found at: http://biostall.com/adding-number-or-letters-to-google-maps-api-markers
            icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + markerId + '|FE6256|000000'
        });

        marker.setMap(map);
        markers.push([markerId, name, marker.getPosition().lat(), marker.getPosition().lng(), description]);
        //alert("" + markers);
        markerId = markerId + 1;
    }

    google.maps.event.addListener(map, 'click', function(event) {
        placeMarker(event.latLng);
    });

    google.maps.event.addListener(marker, "click", function() {
        map.removeOverlay(marker);
        marker.setMap(map);
    });
} 

window.onload = function() {
    var form = document.getElementById('theform');
    form.addEventListener('submit', function(){
        var markersField = document.getElementById('markers');
        markersField.value = JSON.stringify(markers);
    });
}

我的 HTML 是:

<form action="portal.php" method="post" id="theform">
    <input type="hidden" id="markers" name="markers">
    <button>Submit</button>
</form>

在我的 portal.php 文件中我有:

$markers = json_decode($_POST['markers']);
echo $markers;

即使我知道数组中有元素,php 页面中也没有打印任何内容,这让我相信数组没有被传递。

最佳答案

我假设您的页面在您提交表单时已经重新加载,并且您对此没有问题。如果是这样,您可以为该数据添加一个隐藏字段,并在表单提交之前将其添加到字段中:

<form method="post" id="theform">
    <!-- your existing form fields -->

    <input type="hidden" id="markers" name="markers">

    <button>Submit</button>
</form>

然后使用这个 JavaScript

window.onload = function() {
    var form = document.getElementById('myform');
    form.addEventListener('submit', function(){
        var markersField = document.getElementById('markers');
        var markers = [1,2,3];
        markersField.value = JSON.stringify(markers);
    });
}

并将其添加到您的 PHP 中,您将在其中处理提交的表单数据:

$markers = json_decode($_POST['markers']);

关于php - 将 Javascript 数组传递给 PHP 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15625671/

相关文章:

javascript - 为什么 EventSource 关闭时服务器端脚本不停止?

javascript - 如何从 JavaScript 数组中添加具有嵌套级别的动态键

javascript - d3.svg.diagonal() 在哪里?

javascript - 如何通过数组获取多个值并在 Google map 中显示此地点?

javascript - 当另一个项目添加到数组时从数组中删除项目

c - 滑动算法

php - 如何跳过第一行并从 PHP 中的 csv 读取最多五行

php - PHP 脚本上的 504 网关超时错误

php - CSS - PHP header 包含文件不适合设备大小/达到整个宽度

javascript - 运行 iframe 中的 javascript 函数?