xhttp POST xml数据到服务器

时间:2018-11-28 15:29:37

标签: javascript php

我正在使用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;
?>

0 个答案:

没有答案