麻烦让AJAX GET使用空格

时间:2014-03-05 03:01:58

标签: php mysql ajax

我有一个名为orgs的MYSQL表,其中包含name,city,zip和state列。我想要一个AJAX下拉列表,当我从下拉列表中选择城市名称时,会在页面上的另一个字段中填入城市名称。我目前根据我的状态更新城市更新,但是当我尝试根据城市的组织名称调用我的代码失败时。这就是我现在所拥有的。

AJAX获取城市名称:

function list(str)
{
if (str=="")
  {
  document.getElementById("list").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  var xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("list").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","../php/list_org.php?q="+str,true);
xmlhttp.send();
}

AJAX获取基于城市的组织名称:

function get_cities(str)
{
if (str=="")
  {
  document.getElementById("get_cities").innerHTML="";
  return;
  } 
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  var xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("get_cities").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","../php/get_cities.php?q="+str,true);
xmlhttp.send();
}

list_org.php:

<?php include_once '../php/db_connect.php'; ?>
<?php
$q = strval($_GET['q']);


$sql2="SELECT DISTINCT city FROM orgs WHERE state= '".$q."'";

$result2=mysqli_query($connection,$sql2);

if(!$result2){
      die("Database query failed. " . mysqli_error($connection));
    }

    echo "<form>";
    echo '<select name="get_cities" onchange="get_cities(this.value)">';
    echo '<option value="">Select a city:</option>';
while($row2= mysqli_fetch_array($result2)){
    echo '<option value="' . $row2['city']. '">'. $row2['city'].'</option>';
}
    echo "</form>";
mysqli_close($connection);
?>

get_cities.php:

<?php include_once '../php/db_connect.php'; ?>
<?php
$q = strval($_GET['q']);
$q='CA';



$sql2="SELECT * FROM orgs WHERE state = '".$q."'";

$result=mysqli_query($connection,$sql2);

if(!$result){
      die("Database query failed. " . mysqli_error($connection));
    }
echo $q;
$link_address = '#';
echo '<div id="get_cities">';
while($row = mysqli_fetch_array($result))
  {
  echo "<ul>";
  echo "<li><a href='".$link_address."' name='" . $row['id'] ."'>" . $row['name'] . "</a></li>";
  echo "</ul>";
  }
 echo '</div>'




mysqli_close($connection);
?>

我认为这个问题可能是因为我正在通过带有空格的城市(比如“洛杉矶”),但我尝试过像“Buffalo”这样的单一名称城市,当我改变我的选择时也没有任何反应。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您在list_org.php中缺少</select>。首先尝试修复那个,然后逃避你的字符串。

替换

xmlhttp.open("GET","../php/get_cities.php?q="+str,true);

xmlhttp.open("GET","../php/get_cities.php?q="+escape(str),true);