将Javascript数组传递给PHP文件

前端之家收集整理的这篇文章主要介绍了将Javascript数组传递给PHP文件前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
参见英文答案 > How to pass JavaScript variables to PHP?12个
> Passing a JavaScript Value to a PHP Variable (With Limitation)3个
所以我知道Javascript是客户端的,PHP是服务器端的,这使事情复杂化,但我想知道如何去做.

我的javascript代码(在HTML文件中)有一个数组,当用户点击我的提交按钮时,我希望页面通过该数组发送到我的PHP页面,然后将该日期转换为sql数据库.

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

我已经看了很多关于此的帖子,但是所有的解决方案都不适合我需要做的事情,或者需要对我现在能做的事情进行太多的改变.我对AJAX或JSON并不熟悉(不确定究竟是什么).

我的Javascript是:

  1. var markers = [];
  2.  
  3. function placeMarker(location) {
  4. var clickedLocation = new google.maps.LatLng(location);
  5. var name = document.getElementById("checkname").value;
  6. var description = document.getElementById("description").value;
  7.  
  8.  
  9. var marker = new google.maps.Marker({
  10. position: location,map: map,title: name,// This may cause a problem when reloading and editing an existing tour
  11. // url was found at: http://biostall.com/adding-number-or-letters-to-google-maps-api-markers
  12. icon: 'http://chart.apis.google.com/chart?chst=d_map_pin_letter&chld=' + markerId + '|FE6256|000000'
  13. });
  14.  
  15. marker.setMap(map);
  16. markers.push([markerId,name,marker.getPosition().lat(),marker.getPosition().lng(),description]);
  17. //alert("" + markers);
  18. markerId = markerId + 1;
  19. }
  20.  
  21. google.maps.event.addListener(map,'click',function(event) {
  22. placeMarker(event.latLng);
  23. });
  24.  
  25. google.maps.event.addListener(marker,"click",function() {
  26. map.removeOverlay(marker);
  27. marker.setMap(map);
  28. });
  29. }
  30.  
  31. window.onload = function() {
  32. var form = document.getElementById('theform');
  33. form.addEventListener('submit',function(){
  34. var markersField = document.getElementById('markers');
  35. markersField.value = JSON.stringify(markers);
  36. });
  37. }

我的HTML是:

  1. <form action="portal.PHP" method="post" id="theform">
  2. <input type="hidden" id="markers" name="markers">
  3. <button>Submit</button>
  4. </form>

在我的portal.PHP文件中,我有:

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

尽管我知道数组中有元素,但在PHP页面中没有打印出来,这让我相信数组没有被传递过.

解决方法

我假设您提交表单时已经重新加载了页面,并且您没有遇到任何问题.如果是这样,您可以为该数据添加隐藏字段,并将其添加到表单提交之前的字段中:
  1. <form method="post" id="theform">
  2. <!-- your existing form fields -->
  3.  
  4. <input type="hidden" id="markers" name="markers">
  5.  
  6. <button>Submit</button>
  7. </form>

然后使用这个JavaScript

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

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

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

猜你在找的JavaScript相关文章