被忽略的ajax查询中的&符号

时间:2014-01-23 07:02:58

标签: javascript ajax url

我已将问题隔离到我的ajax,不允许将&符号插入到查询中。因此,例如输入的str或字符串是Fish&芯片。只有Fish Shows。

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

}

当查询被发送到getBrand.php时,以及当您输入&amp;符号它将它转换为url im中的变量。在ajax很糟糕我不知道如何解决这个问题..任何人都有任何建议吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

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

答案 1 :(得分:1)

&用于分隔查询字符串中的多个参数。您需要使用encodeURIComponent来确保参数中的所有特殊字符都已编码。

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