我没有更改Ajax代码,除了用于调用PHP函数的url。
编辑:
调用ajax文件:
<script type="text/javascript" src="js/prototype.js"></script>
<script type="text/javascript" src="js/myValidation.js"></script>
</head><body>
....
Username: <input type="text" name="uname" id='uname' />
<a href="JavaScript:Validate();"> Available?</a>
<span id="result"></span>
Email address: <input type="text" name="email" />
...
我在html中嵌入了这个函数调用。验证功能来自书籍“PHP和Script.aculo.us Web 2.0 app interfaces”
myValidation.js
function Validate(){
var user=$('uname');
var name="uname="+user.value;
var pars=name;
new Ajax.Request(
'myValidation.php',
{
method:'post', parameters:pars, asynchronous:true, onComplete: showAvailable
}
);
}
function showAvailable(originalRequest){
var newData=originalRequest.responseText;
$('result').innerHTML=newData;
}
这个例子来自提到的书
答案 0 :(得分:1)
您尚未向我们展示您的myValidation.js
文件,但以下是当人们从内联script
块移动到外部文件并且事情停止工作时我看到的典型原因:
他们将script
块放在外部JavaScript文件中。你可能没有这样做,但我经常看到它提到它。您的外部脚本是纯JavaScript,例如它应该是:
function Validate() {
// ...
}
不
<script type='text/javascript'>
function Validate() {
// ...
}
</script>
我见过后者了。
他们将JavaScript文件放在与其脚本标记src
不匹配的位置。
他们在脚本中留下了开场<!--
或关闭-->
。重要的是不要这样做,在外部JavaScript文件中这些是语法错误。
他们使用区分大小写的网络服务器且src
属性与文件的实际名称不匹配。
他们使用的是对权限敏感的网络服务器,而该文件没有正确的权限。
对于上面的最后两个,很容易检查:只需打开一个新选项卡,然后输入JavaScript文件的URL。如果你看到JavaScript,很棒;如果没有,你可能有更多的信息。
对于像这样的问题(和其他数百个),没有什么比拥有一个像样的工具集更好的了。为了在浏览器上调试JavaScript,有很多。有Firebug(一个Firefox插件),Chrome和Safari的开发工具(内置于浏览器中),Microsoft Visual Studio或Script Debugger用于使用IE进行调试等.Firebug和Dev Tools都会告诉你有关损坏的src
链接,以及任何例外等。
答案 1 :(得分:0)
您是否检查过可以从HTML代码访问这些文件?还有更多 - 你是否将脚本放在页面底部 - 因为AJAX只将它的处理程序绑定到现有元素?
答案 2 :(得分:0)
问题解决了。
在/ js /文件夹中我有一个php文件,我放在那里只是因为简单。将它移动到其他位置后全部工作。不知道是不是规则,坚持没有/ js /文件夹中的php文件。谢谢T.J和Tomasz