存在的函数列为“未定义”

时间:2011-12-02 05:21:02

标签: javascript jquery html ajax

我不确切地知道为什么或如何这种情况发生(尽管如果某人有任何关于为什么或如何的信息,如果它被发布在这里将非常感激)。

我的函数应该只是对指定文件进行简单的ajax调用,然后该文件应该处理该调用。

function processLog(process, ajaxData, url) {

    switch(process) {
         case 'send':
        $.post(url, {clientData : ajaxData, type : process}, 
            function(data){
                writeLog(data);
            }
        );
        break;
          case 'retrieve':
        $.post(url, {clientData : ajaxData, type : process}, 
                function(data){
                    retrieveChatroomData(data); 
                }
        );            
        break;
      }


}

基本上,该函数接收三个参数:process,ajaxData,url。该流程应该是发送检索的值。如果它的值是发送的,它只是将数据写入日志。如果它被检索,它将检索之前在窗口中发送的所有数据,并将其发布给所有人查看。如果有人需要再查看代码,我会高兴地发帖,请让我知道:)。

主要问题是当我点击以下按钮时:

<input type="button" value="send" id="chatroom_send" onclick="processLog('send', $('textarea.chatroom_textarea').value, 'chatroom.base.php');" />

我在Firebug控制台中遇到“processLog”未定义错误。

我做错了什么?

1 个答案:

答案 0 :(得分:3)

您的代码可能如下所示:

$(function() {
    function processLog(/* ... */) {
        // ...
    }
});

在某些事情上需要将代码包装在这样的就绪处理程序中,但它会将processLog拉出全局范围。将其移出就绪处理程序或将其添加到就绪处理程序中的某处以将其导出到全局范围:

window.processLog=processLog;