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

Javascript 存在的函数列为;“未定义”;,javascript,jquery,html,ajax,Javascript,Jquery,Html,Ajax,我不知道这到底是为什么或如何发生的(尽管如果有人知道为什么或如何发生的任何信息,如果在这里发布,将不胜感激) 我的函数应该只是对指定的文件进行一个简单的ajax调用,然后该文件应该处理该调用 function processLog(process, ajaxData, url) { switch(process) { case 'send': $.post(url, {clientData : ajaxData, type : process},

我不知道这到底是为什么或如何发生的(尽管如果有人知道为什么或如何发生的任何信息,如果在这里发布,将不胜感激)

我的函数应该只是对指定的文件进行一个简单的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。该过程应该是值发送检索。如果它的值是send,它只是将数据写入日志。如果是retrieve,它将检索之前在窗口中发送的所有数据,并将其发布给所有人查看。如果有人需要查看更多代码,我很乐意发布,只需告诉我:)

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

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

我在Firebug控制台中得到一个“processLog”是未定义的错误


我做错了什么

您的代码可能如下所示:

$(function() {
    function processLog(/* ... */) {
        // ...
    }
});
有些事情需要将代码包装到就绪处理程序中,但它会将
processLog
从全局范围中拉出来。将其移出就绪处理程序或将其添加到就绪处理程序的某个位置,以将其导出到全局范围:

window.processLog=processLog;

您的代码可能如下所示:

$(function() {
    function processLog(/* ... */) {
        // ...
    }
});
有些事情需要将代码包装到就绪处理程序中,但它会将
processLog
从全局范围中拉出来。将其移出就绪处理程序或将其添加到就绪处理程序的某个位置,以将其导出到全局范围:

window.processLog=processLog;
在哪里声明了
processLog()
?将$('textarea.chatroom\u textarea')。值更改为静态值,然后它会工作吗?最好能看到完整的HTML文件。javascript是外部的还是在同一个文件中?声明了
processLog()
的位置在哪里?将$('textarea.chatroom\u textarea')。值更改为静态值,然后它会工作吗?最好能看到完整的HTML文件。javascript是外部的还是在同一个文件中?