Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将javascript变量传递给创建XML的php文件_Javascript_Php_Mysql_Ajax_Xml - Fatal编程技术网

将javascript变量传递给创建XML的php文件

将javascript变量传递给创建XML的php文件,javascript,php,mysql,ajax,xml,Javascript,Php,Mysql,Ajax,Xml,我是新来的,但每天都使用电子论坛,所以请原谅任何礼仪错误!我的问题实际上与这篇文章非常相似。我需要将用户输入从JSVAR传递到php脚本,以查询数据库,然后创建XML。我可以把文件硬编码。我使用的ajax调用的工作原理是,它将使用$\u get向php传递一个var,但是如果我尝试使用传递的变量,除非它是硬编码的,否则它似乎无法输出XML文件;我让这个文件在另一个具有硬编码sql查询的上下文中正常工作。我不确定get方法中是否正确传递了查询?也许代码能更好地解释我的问题 downloadUrl(

我是新来的,但每天都使用电子论坛,所以请原谅任何礼仪错误!我的问题实际上与这篇文章非常相似。我需要将用户输入从JSVAR传递到php脚本,以查询数据库,然后创建XML。我可以把文件硬编码。我使用的ajax调用的工作原理是,它将使用$\u get向php传递一个var,但是如果我尝试使用传递的变量,除非它是硬编码的,否则它似乎无法输出XML文件;我让这个文件在另一个具有硬编码sql查询的上下文中正常工作。我不确定get方法中是否正确传递了查询?也许代码能更好地解释我的问题

downloadUrl("XML.php"+queryString, function(data){
    var xml = data.responseXML;
    var markers = xml.documentElement.getElementsByTagName("marker");
    for (var i = 0; i < markers.length; i++) {
     var type = markers[i].getAttribute("type");
    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("lng")));
     var html = "<b>" + type + "</b> <br/>" + address;
    var icon = "http://maps.google.com/mapfiles/kml/pal4/icon52.png";
    var title = markers[i].getAttribute("address")+ ' Fatalities: ' +markers[i].getAttribute("deaths");
    var marker = new google.maps.Marker({
       map: map,
       position: point,                         
       icon: icon,
       title: title
      });
     bindInfoWindow(marker, map, infoWindow, html);
                            }
  });//downloadUrl
}//load

function bindInfoWindow(marker, map, infoWindow, html) {
  google.maps.event.addListener(marker, 'click', function() {
    infoWindow.setContent(html);
    infoWindow.open(map, marker);
  });
}

function downloadUrl(url, callback) {

  var request = window.ActiveXObject ?
      new ActiveXObject('Microsoft.XMLHTTP') :
      new XMLHttpRequest;

  request.onreadystatechange = function() {
    if (request.readyState == 4) {
      request.onreadystatechange = doNothing;
      callback(request, request.status);
    }
  };
    var type = document.getElementById('confType').value;
    var queryString ="?type=" + type;
  request.open('GET', "XML.php"+queryString, true);
  var params='type='+type;
  request.send(params);
}

function doNothing() {}

<?php
$type = $_GET['type'];
//$type='RiotsProtests';
//$type= mysql_real_escape_string($type);

require("phpsqlajax_dbinfo.php");
$query = "SELECT * FROM incident WHERE EVENT_TYPE = `$type`"; //<-------------||||||
$result = mysql_query($query);
if (!$result) {die('Invalid query: ' . mysql_error());}

$dom = new DOMDocument("1.0");
$node = $dom->createElement("markers");
$parnode = $dom->appendChild($node);
header("Content-type: text/xml");
($row = @mysql_fetch_assoc($result)){
$node = $dom->createElement("marker");
$newnode = $parnode->appendChild($node);
$newnode->setAttribute("type",$row['EVENT_TYPE']);
$newnode->setAttribute("address", $row['LOCATION']);
$newnode->setAttribute("lat", $row['LATITUDE']);
$newnode->setAttribute("lng", $row['LONGITUDE']);
$newnode->setAttribute("deaths", $row['FATALITIES']);
$newnode->setAttribute("actor1", $row['ACTOR1']);
$newnode->setAttribute("actor2", $row['ACTOR2']);
}
echo $dom->saveXML();
?>
downloadUrl(“XML.php”+queryString,函数(数据){
var xml=data.responseXML;
var markers=xml.documentElement.getElementsByTagName(“标记”);
对于(var i=0;i“+地址;
变量图标=”http://maps.google.com/mapfiles/kml/pal4/icon52.png";
变量标题=标记[i]。getAttribute(“地址”)+“死亡:”+标记[i]。getAttribute(“死亡”);
var marker=new google.maps.marker({
地图:地图,
位置:点,,
图标:图标,
标题:标题
});
bindInfoWindow(标记、地图、infoWindow、html);
}
});//下载网址
}//装载
函数bindInfoWindow(标记、地图、infoWindow、html){
google.maps.event.addListener(标记'click',函数(){
setContent(html);
信息窗口。打开(地图、标记);
});
}
函数下载url(url,回调){
var请求=window.ActiveXObject?
新的ActiveXObject('Microsoft.XMLHTTP'):
新的XMLHttpRequest;
request.onreadystatechange=函数(){
if(request.readyState==4){
request.onreadystatechange=doNothing;
回调(请求、请求、状态);
}
};
变量类型=document.getElementById('confType')。值;
var queryString=“?type=“+type;
open('GET','XML.php'+queryString,true);
var params='type='+type;
请求发送(params);
}
函数doNothing(){}

我尝试过使用SESSION_vars输入查询字符串,但似乎没有任何效果。每当我调用XML文件时,它似乎没有输出任何东西,比如XML没有正确填充。当我将头更改为xml/plain时,我从硬代码查询中获得了正确的输出,但是xml过程似乎不喜欢这个变量。请帮忙

只是想知道:使用纯JavaScript而不是jQuery有什么具体原因吗?另外,请注意,您的SQL查询易受攻击,并且您使用的是过时的数据库API。啊,我知道SQL注入。我只是想先让它发挥作用。JavaScript是我开始使用的语言,一旦我了解了更多,我就会对jquery敞开心扉。我还应该使用哪种API?我通常是凭直觉来学习的:pIt只是说用于AJAX调用的jQuery代码比自己完成要简单得多。当我第一次启动JS时,我也只使用纯JS,直到我发现了jQuery。我的观点是jQuery是JavaScript首先应该具备的功能:简单易懂、可移植且易于使用。对于数据库API,我个人更喜欢PDO,但您也可以使用MySQLi。