0

我定义了两个函数,它们基本上应该从下拉菜单中获取一个值,并根据选择的内容,使用 AJAX 抛出一个表格和表单。

这是我的两个功能:

function showParts(str)
{
if (str=="")
  {
  document.getElementById("partvalues").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("partvalues").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","getparts.php?q="+str,true);
xmlhttp.send();
}

function showOrders(str)
{
if (str=="")
  {
  document.getElementById("otherparts").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("otherparts").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","formOrder.php?q="+str,true);
xmlhttp.send();
}
</script>

我测试了这两个功能,它们都可以正常工作。我有 2 个 PHP 页面,其中有一个查询来检索适当的值。但问题是,当我尝试将它们都作为 onchange 事件运行时,它们都不起作用。

echo "<select name = finishgood_list onchange = showParts(this.value); showOrders(this.value)>";
        while ($row = mysql_fetch_array($result))
        {
            echo "<option value='" . $row['fg_id'] . "'>" . $row['fg_id'] . "</option>";
        }

如果我尝试将函数嵌套在括号中,那么当我更改下拉菜单中的值时,它们都不起作用。我单独测试了它们,它们都工作正常,但我不能让它们同时工作。只有第一个函数正在执行,所以如果我改变 showOrder 周围的那些将起作用,但另一个不起作用。

这里有什么问题吗?如果我不能这样做,在从下拉菜单中选择值时,是否有另一种方法可以动态检索适当的值?

4

1 回答 1

0

猜测一下,最明显的变化是从

echo "<select name = finishgood_list onchange = showParts(this.value); showOrders(this.value)>";

echo "<select name = 'finishgood_list' onchange = 'showParts(this.value); showOrders(this.value);' >";

即将属性用引号括起来。

于 2012-11-04T02:56:41.067 回答