【发布时间】:2018-08-15 18:55:52
【问题描述】:
我有一个用于游戏的谷歌地图网络应用程序,用户将单击谷歌地图标记,在弹出的窗口中进行选择,然后单击提交。它使用 AJAX 使用用户选择的信息更新数据库。数据库预先填充了标记的名称和 GPS 坐标,它们已加载。在通过 XML 加载时也会相应地放置标记。
我在我的数据库中更新名为 quest 的一行时遇到了问题,其中包含用户在提交时选择的信息。目前,用户可以选择一个标记并提交一个任务,但它根本不会更新数据库。我不确定要使用的正确 WHERE 语句。这是我当前的 SQL 语句,我正在尝试更新名为 quest 的行。
mysqli_query($con, "UPDATE markers SET quest= '$questName' WHERE markerName = '$markerName'");
这是按下提交按钮时发生的情况。
if (document.getElementById("questType").value ==
"quest1") { //if quest1 is selected upon submission
alert("quest1");
var markerName;
var questName = "Quest 1";
xmlhttp = new XMLHttpRequest();
xmlhttp.open("GET", "ajax.php?questName=" + questName + "&markerName=" + markerName, true);
xmlhttp.send(); //Sending the request to the server
ajax.php
<?php
include("connect.php");
require("call2.php");
$markerName = mysqli_real_escape_string($con, $_GET['markerName']);
$questName = mysqli_real_escape_string($con, $_GET['questName']);
$stmt = $con->prepare("UPDATE markers SET quest = $questName WHERE markerName = $markerName");
$stmt->bind_param($questName, $markerName);
$stmt->execute();
$stmt->close();
?>
这也是我的相关通话文件。
$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
include('connect.php');
$query = "SELECT * FROM markers WHERE 1"; // Select all the rows in the markers table
$result = mysqli_query($con, $query);
if (!$result) {
die('Invalid query: ' . mysqli_error($con));
}
// Iterate through the rows, adding XML nodes for each
while ($row = mysqli_fetch_assoc($result)) {
global $dom, $node, $parnode;
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("markerName",
$row['markerName']);
$newnode->setAttribute("quest", $row['quest']);
$newnode->setAttribute("lat", $row['lat']);
$newnode->setAttribute("longg", $row['longg']);
}
header("Content-type: text/xml");
echo $dom->saveXML();
对不起,如果这很多,我认为问题是我没有为 markerName 分配值。我没有收到任何错误,但是当我将鼠标悬停在 chrome 上的网络选项卡中的 ajaxphp 上时,它看起来好像正在获取 questName 但 markerName 仍未定义。
这里是它加载东西的地方:
downloadUrl("call2.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("markerName"); //<------ here's where it's getting markerName
// var address = markers[i].getAttribute("address");
var type = markers[i].getAttribute("type");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("longg")));
var icon = customLabel[type] || {};
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
}
});
我想我需要找到一种访问名称的方法,但我不确定当它是下载 XML 文件的函数的本地时如何。
connect.php
<?php
$con = mysqli_connect("localhost", "root", "", "pokestop-map");
?>
【问题讨论】:
标签: javascript ajax google-maps