2011-05-08 40 views
1

即使我删除了if语句,以下只有其中一个会一次起作用。为了让前者工作,我必须评论后者。这些功能中只有一个功能可以在同一时间工作吗?

<? 
if(isset($_POST['region'])){ 
echo "<script> showRecords('".$_POST['region']."','region','country') </script>";} 
if(isset($_POST['country'])){ 
echo "<script> showRecords('".$_POST['country']."','country','provice') </script>";} 
?> 

脚本指的是这样的:

function showRecords(str,column,nextDiv) 
{ 
if (str=="") 
    { 

    document.getElementById(nextDiv).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(nextDiv).innerHTML=xmlhttp.responseText; 
    } 
    } 
xmlhttp.open("GET","get"+column+".php?"+column+"="+str,true); 
xmlhttp.send(); 
} 

脚本导致了一个非常简单的设置的网页,该列表基于一些$ _GET信息的一些价值。

我只是不明白为什么它只允许我一次执行这些脚本之一。我甚至试图克隆函数showRecords2,它仍然只会做showRecords或showRecords2。

+0

您的XmlHttp请求对象正在发送GET请求,而不是POST – JamesHalsall 2011-05-08 01:35:18

+0

对不起,$ _POST指的是特定于页面的值。我想要做的是在用户提交时加载正确的列表,如果他想提交一些稍有不同的信息,他将不得不做出尽可能少的更改。 – 2011-05-08 01:37:20

+0

我的坏,误读了 – JamesHalsall 2011-05-08 01:49:57

回答

5

var xmlhttp=new XMLHttpRequest()代替xmlhttp=new XMLHttpRequest()。请注意已添加关键字varxmlhttp正在成为一个全局范围变量,每次发出请求时都会被新的值/参数/参数覆盖。第一个仍然在做第二个调用覆盖它的东西,调用showRecords两次。

请记住在函数级别中使所有变量避免覆盖,除非它们实际上将在全局范围内使用。调试这种类型的问题非常耗时,特别是当您不知道在哪里找东西时。希望有所帮助!

+0

Wooops,我有一个“省”的错误“provice”。它工作完全:) – 2011-05-08 02:14:30

+0

这是一些很好的建议,相信我,我从现在开始要这样做。 – 2011-05-08 02:16:07

相关问题