简单的ajax /原型问题

时间:2010-09-12 14:19:54

标签: ajax file prototypejs external

从Ajax开始,我遇到了包含Ajax文件的问题。 用原始页面编写的Ajax代码(如index.php)并放在(head)部分工作正常,但是当我尝试将代码放在外部文件中时(在 js 文件夹中) ,在哪里放置prototype.js文件),我没有得到任何响应,甚至在Firefox错误控制台中也没有。

我没有更改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;
}

这个例子来自提到的书

3 个答案:

答案 0 :(得分:1)

您尚未向我们展示您的myValidation.js文件,但以下是当人们从内联script块移动到外部文件并且事情停止工作时我看到的典型原因:

  1. 他们将script块放在外部JavaScript文件中。你可能没有这样做,但我经常看到它提到它。您的外部脚本是纯JavaScript,例如它应该是:

    function Validate() {
        // ...
    }
    

    <script type='text/javascript'>
    function Validate() {
        // ...
    }
    </script>
    

    我见过后者了。

  2. 他们将JavaScript文件放在与其脚本标记src不匹配的位置。

  3. 他们在脚本中留下了开场<!--或关闭-->。重要的是不要这样做,在外部JavaScript文件中这些是语法错误。

  4. 他们使用区分大小写的网络服务器且src属性与文件的实际名称不匹配。

  5. 他们使用的是对权限敏感的网络服务器,而该文件没有正确的权限。

  6. 对于上面的最后两个,很容易检查:只需打开一个新选项卡,然后输入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