Javascript php中的查询失败,返回get和空格

Javascript php中的查询失败,返回get和空格,javascript,php,mysql,get,Javascript,Php,Mysql,Get,希望有人能帮忙。我有一个动态的下拉列表,在我添加一个带有空格的新项目之前,它一直工作得很好。这让我很困惑,因为我的第二个下拉列表中有带空格的项,查询可以很好地运行,但是第一个下拉列表失败了。我试图找出任何可能导致失败的差异,但我就是看不到。这是我发现的混合脚本,我对Javascript和PHP非常陌生,所以我迷路了。我希望有人能指出我的错误。下面是我认为您需要看到的代码第一个脚本是控制下拉列表失败的脚本第二个脚本正在工作: <script type="text/javascript

希望有人能帮忙。我有一个动态的下拉列表,在我添加一个带有空格的新项目之前,它一直工作得很好。这让我很困惑,因为我的第二个下拉列表中有带空格的项,查询可以很好地运行,但是第一个下拉列表失败了。我试图找出任何可能导致失败的差异,但我就是看不到。这是我发现的混合脚本,我对Javascript和PHP非常陌生,所以我迷路了。我希望有人能指出我的错误。下面是我认为您需要看到的代码第一个脚本是控制下拉列表失败的脚本第二个脚本正在工作:

    <script type="text/javascript">
function AjaxFunction()
{

var ddstring = document.getElementById("name");
var ddindex = ddstring.options[ddstring.selectedIndex].value;

if (ddindex != 0){  
var httpxml;
try
  {
  // Firefox, Opera 8.0+, Safari
  httpxml=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
          try
                    {
                 httpxml=new ActiveXObject("Msxml2.XMLHTTP");
                    }
            catch (e)
                    {
                try
            {
            httpxml=new ActiveXObject("Microsoft.XMLHTTP");
             }
                catch (e)
            {
            alert("Your browser does not support AJAX!");
            return false;
            }
            }
  }
function stateck() 
    {
    if(httpxml.readyState==4)
      {
//alert(httpxml.responseText);
var myarray = JSON.parse(httpxml.responseText);
var myarray=myarray.split(",");
for(j=document.searchform.type.options.length-1;j>=0;j--)
{
document.searchform.type.remove(j);
}
for (i=0;i<myarray.length;i++)
{
var optn = document.createElement("OPTION");

optn.text = myarray[i];
optn.value = myarray[i];
document.searchform.type.options.add(optn);
} 
{
var optn2 = document.createElement("OPTION");

optn2.text = "Select Type";
optn2.value = '%';
document.searchform.type.options.add(optn2,0);
} 
{
document.searchform.type.disabled=false;
document.searchform.type.selectedIndex = 0;
var defaultdd = "<?php echo $_SESSION['type'] ?>";

if (defaultdd != ""){
document.getElementById('s2').value = defaultdd;
if (defaultdd != "%"){
AjaxFunction2(); 
}

}
}

  }
}
var url="dd.php";
var cat_id=document.getElementById('name').value;
url=url+"?cat_id="+cat_id;
url=url+"&sid="+Math.random();
httpxml.onreadystatechange=stateck;
//alert(url);
httpxml.open("GET",url,true);
httpxml.send(null);
}

else {
    document.searchform.type.selectedIndex = 0;
    document.searchform.subcat.selectedIndex = 0;
    document.searchform.type.disabled=true;
    document.searchform.subcat.disabled=true;       
}
}
</script>




<script type="text/javascript">
function AjaxFunction2()
{
var httpxml;
try
  {
  // Firefox, Opera 8.0+, Safari
  httpxml=new XMLHttpRequest();
  }
catch (e)
  {
  // Internet Explorer
          try
                    {
                 httpxml=new ActiveXObject("Msxml2.XMLHTTP");
                    }
            catch (e)
                    {
                try
            {
            httpxml=new ActiveXObject("Microsoft.XMLHTTP");
             }
                catch (e)
            {
            alert("Your browser does not support AJAX!");
            return false;
            }
            }
  }
function stateck() 
    {
    if(httpxml.readyState==4)
      {
//alert(httpxml.responseText);
var myarray = JSON.parse(httpxml.responseText);
var myarray=myarray.split(",");
for(j=document.searchform.subcat.options.length-1;j>=0;j--)
{
document.searchform.subcat.remove(j);
}


for (i=0;i<myarray.length;i++)
{
var optn = document.createElement("OPTION");
optn.text = myarray[i];
optn.value = myarray[i];
document.searchform.subcat.options.add(optn);

} 
{
var optn2 = document.createElement("OPTION");

optn2.text = "Select Series";
optn2.value = '%';
document.searchform.subcat.options.add(optn2,0);
}
{
document.searchform.subcat.disabled=false;
document.searchform.subcat.selectedIndex = 0;

var defaultdd = "<?php echo $_SESSION['subcat'] ?>";
if (defaultdd != ""){
document.getElementById('s3').value = defaultdd;
}
}

      }
    }
    var url="dd2.php";
var cat_id=document.getElementById('name').value;
var cat_id2=document.getElementById('s2').value;
url=url+"?cat_id="+cat_id;
url=url+"&cat_id2="+cat_id2;
url=url+"&sid="+Math.random();
httpxml.onreadystatechange=stateck;
//alert(url);
httpxml.open("GET",url,true);
httpxml.send(null);
  }
</script>
感谢Vigour为我指明了正确的方向。不幸的是,由于我的声誉,我无法选择一条评论作为答案,也无法为我自己的问题发布答案,但非常感谢您发现了这个问题

导致问题的代码行是:

echo "<option value=$row[Manufacturer] $selected>$row[Manufacturer]</option>";
需要将其更改为此,以根据需要添加引号,并仍然选择正确的保存项目:

echo "<option value='" . $row['Manufacturer']."' ".$selected." >" . $row['Manufacturer'] . "</option>";

最好测试它,但我认为JS应该用+号替换空字符串,以便正确地传递它:

替换: var cat_id=document.getElementById'name'。值

与:
var cat_id=document.getElementById'name'。value.replace'//gi','+'

应添加带引号的选项值,否则将无法传递间隔值

 <option value="Kyocera Mita" >Kyocera Mita</option>

当您查看源代码并查看下拉列表所在的部分时,实际会向浏览器发送什么?有时,字段中会显示错误消息。当我从浏览器查看源代码时,表单选项中除了第一个下拉列表中的值外,没有显示任何内容。页面上没有我能看到的错误。这就好像查询运行时没有返回任何结果一样。但是,当我从第一个下拉列表中选择一个没有空格的值时,第二个值就被填充了。。我有一个部分,张贴每个下拉选择的值,第二个单词没有被捕获。因此,如果您选择Pitney Bowes,则只有Pitney被发回页面。正如预期的那样,虽然第二个下拉列表中的两个单词的选择将与两个单词一起返回。在JS中选择间隔值时出现错误:[23:10:26.259]TypeError:myarray.split不是一个函数@在此处查看信息:可能有助于调试问题。alermyarray;在var myarray=JSON.parsehttpxml.responseText;之后返回;?好的,所以问题似乎是脚本从元素中检索值的时间。我让它在:var cat_id=document.getElementById'name'.value;使用var cat_id,只捕获第一个单词。所以我想我需要弄清楚如何捕捉这两个词,或者为什么只捕捉一个……发现了问题:京瓷三塔应该是京瓷三塔
echo "<option value=$row[Manufacturer] $selected>$row[Manufacturer]</option>";
echo "<option value='" . $row['Manufacturer']."' ".$selected." >" . $row['Manufacturer'] . "</option>";
 <option value="Kyocera Mita" >Kyocera Mita</option>