Javascript 仅在根目录下工作的AJAX脚本

Javascript 仅在根目录下工作的AJAX脚本,javascript,ajax,root,Javascript,Ajax,Root,我创建了一个AJAX投票者,它似乎只在根域上工作。因此,如果我查看主页mydomain.com,投票在该页面上是完全有效的。如果我在mydomain.com/topic/article2.html中查看某个内容,它将不起作用。出于某种原因,脚本似乎找不到vote.php文件,即使我将其放在根目录中。Ajax请求给出了状态500(内部服务器错误),我希望找不到文件时出现404。我使用了一些不同的引用位置组合,例如“/vote.php”和“vote.php”,问题没有改变。我还尝试将vote.php

我创建了一个AJAX投票者,它似乎只在根域上工作。因此,如果我查看主页mydomain.com,投票在该页面上是完全有效的。如果我在mydomain.com/topic/article2.html中查看某个内容,它将不起作用。出于某种原因,脚本似乎找不到vote.php文件,即使我将其放在根目录中。Ajax请求给出了状态500(内部服务器错误),我希望找不到文件时出现404。我使用了一些不同的引用位置组合,例如“/vote.php”和“vote.php”,问题没有改变。我还尝试将vote.php文件放在其他位置,但没有一个位置是我尝试过的。任何帮助都将不胜感激,因为我花了数小时在线阅读可能的解决方案,但找不到解决方案

我正在使用Joomla 2.5和Seblod 3.1中的脚本,如果这有帮助的话

我的脚本中没有什么疯狂的地方,但我认为它与“/vote.php”有关。也许有一种方法可以强制服务器从其他位置检查根目录

<script>
function SetVote(vote_choice, a, u)
{

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.write(xmlhttp.responseText);
    document.getElementById("result"+a).innerHTML=xmlhttp.responseText;
    }
  }    
xmlhttp.open("GET","./vote.php?vote="+ vote_choice + "&a=" + a + "&u=" + u,true);
xmlhttp.send();
}
</script>

函数SetVote(投票选择,a,u)
{
if(window.XMLHttpRequest)
{//IE7+、Firefox、Chrome、Opera、Safari的代码
xmlhttp=新的XMLHttpRequest();
}
其他的
{//IE6、IE5的代码
xmlhttp=新的ActiveXObject(“Microsoft.xmlhttp”);
}
xmlhttp.onreadystatechange=函数()
{
if(xmlhttp.readyState==4&&xmlhttp.status==200)
{
//document.write(xmlhttp.responseText);
document.getElementById(“结果”+a).innerHTML=xmlhttp.responseText;
}
}    
xmlhttp.open(“GET”,”/vote.php?vote=“+vote_choice+”&a=“+a+”&u=“+u,true”);
xmlhttp.send();
}
命令“/”只会将您向下移动一个子目录(如果您在/php/submit中有文件)。/”将引用“/php”而不是“/”。尝试将“/vote.php?”替换为“/vote.php”。

关于路径:

  • /
    表示根目录
  • /
    表示当前目录
  • 。/
    表示当前目录上方的目录

因此,只要您不在服务器端工作,
/vote.php
应该可以解决这个问题。

使用firebug,服务器似乎试图像“mydomain/index.php/vote.php”一样访问它,因此它会自动将index.php粘贴在那里。也许这就是问题所在,我可以覆盖它吗?如果我在joomla服务器中关闭SEF,它看起来会工作,但它会弄乱我的页面,我希望SEF:(/不会让你下移。它会让你保持正确的位置。事实证明,工作的解决方案不仅仅是“/”而是“/domainname/vote.php”在我的服务器上。我不知道根目录是否比域文件夹高出一级是标准的。感谢提供///详细信息。