我正在使用WordPress。我对php和javascript的了解还可以。我不知道jQuery,所以很高兴获得答案是使用javascrip / php解决方案。
我的JavaScript创建了一个XML DOM文档(它从Google Maps路径创建了gpx文件的trk,trkseg和trkpt节点)。然后,我使用XHTTP和POST将这些数据传递到服务器,其中php脚本应接收该数据,然后在最终将其存储到服务器之前对其进行处理。
但是我被困住了。我尝试过两种方式发布数据-“内容类型”,“应用程序/ x-www-form-urlencoded”以及“应用程序/ xml”。
说实话,我不确定问题出在客户端还是服务器端。
如果有人能找出问题所在,我将不胜感激。我已经附上了相关代码。对您的答案的一些解释将非常有用,因此我可以学习...我已经看过互联网了...
来自客户端:
function sendDataToServer(line) {
var updatedTrackDOM = document.implementation.createDocument("", "", null);
var trk = updatedTrackDOM.createElement("trk");
var name = updatedTrackDOM.createElement("name");
trk.appendChild(name);
var trkseg = updatedTrackDOM.createElement("trkseg");
var pathArr = line.getPath();
for (var i = 0; i < pathArr.length; i++){
var trkpt = updatedTrackDOM.createElement("trkpt");
trkpt.setAttribute("lat", pathArr.getAt(i).lat());
trkpt.setAttribute("lon", pathArr.getAt(i).lng());
var ele = updatedTrackDOM.createElement("ele");
ele.innerHTML = 100;
trkpt.appendChild(ele);
var time = updatedTrackDOM.createElement("time");
time.innerHTML = '2010-01-01T00:00:00Z';
trkpt.appendChild(time);
trkseg.appendChild(trkpt);
};
trk.appendChild(trkseg);
updatedTrackDOM.appendChild(trk);
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
var text = 'Response received: ' + this.responseText;
alert(text);
}
};
xhttp.open("POST", 'script_update_track.php', true);
xhttp.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
xhttp.send("Path=" + updatedTrackDOM);
}
从服务器获取((script_update_track.php内容):
<?php
define( 'WP_USE_THEMES', false ); // Don't load theme support functionality
$path = preg_replace('/wp-content.*$/','',__DIR__);
include($path.'wp-load.php');
$newFile = $_POST['Path'];
$xml = simplexml_load_file($newFile) or die ("Error: Cannot create object2");
$startlat = $xml->trk[0]->trkseg[0]->trkpt['lat'];
echo 'Check it worked by posting this: ', $startlat;
?>