неожиданная не определенная ошибка в JavaScript

0

У меня есть страница, в которой есть функция, которая вызывает функцию из 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

благодаря

  • 4
    Где определяется qc_chat . если он вообще не определен, вы получите эту ошибку.
  • 1
    Да, пожалуйста, покажите, где это определено . Это не в вашем коде.
Показать ещё 9 комментариев
Теги:

2 ответа

3

Поскольку $.getScript асинхронен, все, что зависит от загружаемого скрипта, должно выполняться в его функции обратного вызова. Так должно быть:

$.getScript('qc.js', function() {
    qc_chat.setup('<?php echo $p; ?>');
});
  • 0
    может быть <body onload="doThat('<?php echo $p; ?>');"> и function doThat(_p) { и qc_chat.setup(_p) поскольку другой код является файлом .js.
  • 0
    ошибка не отображается, но мой код также не работает ... что зависит от этих файлов. :(
Показать ещё 9 комментариев
0

Когда я не могу редактировать место, где подключаются некоторые модули, я использую этот фрагмент:

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

Вы также должны написать логику для ограничения ожидания, если qcchat никогда не сможет подключиться

  • 0
    Это работает, но это невероятный клудж. Научитесь правильно использовать функции обратного вызова.
  • 0
    Согласитесь, это только для случаев, когда я не могу изменить / обнаружить место, где подключен скрипт. Поместите как $.getScript('qc.js')

Ещё вопросы

Сообщество Overcoder
Наверх
Меню