int*_*ntA 6 javascript php 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);
});
}
Run Code Online (Sandbox Code Playgroud)
我的HTML是:
<form action="portal.php" method="post" id="theform">
<input type="hidden" id="markers" name="markers">
<button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
在我的portal.php文件中,我有:
$markers = json_decode($_POST['markers']);
echo $markers;
Run Code Online (Sandbox Code Playgroud)
尽管我知道数组中有元素,但在php页面中没有打印出来,这让我相信数组没有被传递过.
bfa*_*tto 10
我假设您提交表单时已经重新加载了页面,并且您没有遇到任何问题.如果是这样,您可以为该数据添加隐藏字段,并将其添加到表单提交之前的字段中:
<form method="post" id="theform">
<!-- your existing form fields -->
<input type="hidden" id="markers" name="markers">
<button>Submit</button>
</form>
Run Code Online (Sandbox Code Playgroud)
然后使用这个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);
});
}
Run Code Online (Sandbox Code Playgroud)
并将其添加到PHP中,您可以在其中处理提交的表单数据:
$markers = json_decode($_POST['markers']);
Run Code Online (Sandbox Code Playgroud)
这可能是最直接的做法.它使用jQuery,这对这种东西很有用.第一部分只是将数组作为markers参数发送到AJAX POST中.
// Javascript / jQuery
$.ajax({
type: 'POST',
data: markers,
dataType: 'json',
url: 'yourPHPFile.php'
});
Run Code Online (Sandbox Code Playgroud)
这部分是接收帖子并将JSON解码为PHP数组的PHP.
// PHP in 'yourPHPFile.php'
// Santizing the string this way is a little safer than using $_POST['markers']
$markersFromPost = filter_input(INPUT_POST, 'markers', FILTER_SANITIZE_STRING);
// Turn the sanitized JSON string into a PHP object
$markers = json_decode($markersFromPost);
Run Code Online (Sandbox Code Playgroud)
您将需要学习 AJAX 和 JSON 的基础知识。jQuery 可以帮助您完成此任务,我推荐它作为一个很好的起点。
使用 AJAX 提交 JSON,然后使用$phpArray = json_decode($submittedJson);viola,您将获得提交的 javascript 对象的漂亮 PHP 数组。
| 归档时间: |
|
| 查看次数: |
27935 次 |
| 最近记录: |