javascript中意外未定义的错误

时间:2013-10-09 18:04:05

标签: php jquery

我有一个页面,其中有一个从js文件调用函数的函数。

在js文件中调用函数的代码:

<script language="javascript" type="text/javascript">
var qc = qc_chat;
window.onload = function()
{
qc.setup('<?php echo $p; ?>');
}
</script>

我使用以下代码包含qc.js文件:

function doThat() {
    $.ajax({
        url:    'http://www.example.com',
        type: 'GET',
        data: 'adrs='+getHost( document.domain ),
        dataType:   'jsonp',
        jsonp:  false,
        jsonpCallback: 'methodCallback',
        success: function( data ) {
            if( data.message == "yes" ) {

            } else {

        $.getScript("qc.js"); //files m including using this ajax
    $.getScript("tools.js");  //files m including using this ajax
            }
        }, 
        error: function( error ) {
            console.log( error ); 
        }
    });
}

我正在使用doThat()

致电<body onload="doThat();">

但我在控制台Uncaught ReferenceError: qc_chat is not defined

中收到错误

由于

2 个答案:

答案 0 :(得分:3)

由于$.getScript是异步的,因此依赖于它加载的脚本的任何内容都必须在其回调函数中完成。所以它应该是:

$.getScript('qc.js', function() {
    qc_chat.setup('<?php echo $p; ?>');
});

答案 1 :(得分:0)

当我无法编辑某些模块连接的位置时,我使用此代码段:

var waitForqcchat = setInterval(function(){
  if(typeof qcchat != 'undefined'){
    clearInterval(waitForqcchat);
    //here I sure, that module connected
    qcchat.setup('<?=$p?>');
  }
}, 200);

如果qcchat永远无法连接,你还应该编写一个限制等待的逻辑