未捕获的TypeError:undefined在使用jQuery时不是函数

时间:2014-06-05 09:08:40

标签: jquery

我已经编写了这个脚本来向我的机器发出TCPIP请求,这很好。

当我在开关中得到status = 0时(0 =读卡器未准备好)我编写了代码,以便10秒后的间隔再次“按下”“#print_card”按钮,以便再次尝试请求

一切正常但当我再次按下$('#print_card').trigger("click");按钮时,我得到了一个着名的错误:

未捕获的TypeError:undefined在使用jQuery 时不是函数,并且控制台将此值提供给bootstrap.min.js:6文件(这是原始的Bootstrap文件)。

我尝试了$('#print_card').click();,没有任何改变......

这是我的代码。如果我删除#439行$('#print_card').trigger("click");我没有收到错误...:

  var interval;
  var status_timer;
  function attendi_e_riprova(txt){
    var sec = 10;

    var interval = setInterval(function(){
      if(sec != 1){
        sec--;
        if(sec == 1){
          sec_word = 'secondo';
        }else{
          sec_word = 'secondi';
        }
        $('#card-modal-body').html('<p>'+txt+'</p>');
      }else{
        clearInterval(interval);

        //THIS IS THE TRIGGER <-----------------------------------
        $('#print_card').trigger("click");
        //THIS IS THE TRIGGER <-----------------------------------

        return false;
      }
    }, 1000);

    $('.close').click(function(){
      clearInterval(interval);
      clearInterval(status_timer);         
    }); 

  }

  var codemaster = '1';
  var chain = 1;
  var shop = 1;

  function scriviCard(){
    //Another function
  }


  $('#print_card').click(function(){
    $('#card-modal-body').html('<p><i class="fa fa-spinner fa-spin"></i> Ricerca del lettore e card, attendere&hellip;</p>');

    var req = '"CWD2";"';

    $.post(base_url()+'config/RichiestaTCPIP', {array:req}, function(status){
      if(status == 'err'){
        console.error('Errore: controller file config.php funzione di linea #117');
      }else{
        console.log('Status: '+status)

        switch(status){
          case '0':
            attendi_e_riprova('<i class="fa fa-ban text-danger"></i> Lettore NON disponibile. Assicurarsi che sia collegato.');
          break;
          case '1':
            attendi_e_riprova('Lettore vuoto. Inserire una card vergine per poterla scrivere.');
          break;
          case '4':
            attendi_e_riprova('<i class="fa fa-check text-success"></i> Card trovata. In attesa di riconoscimento...');
          break;
          case '5':
            attendi_e_riprova('<i class="fa fa-ban text-danger"></i> Card in scrittura. Attendere completamento.');
          break;
          default:
            //Nuova richiesta per la creazione card (per status 2 o 3)
            scriviCard();
            //console.log(status)
          break;
        }
      }         
    })

  })

1 个答案:

答案 0 :(得分:4)

我认为您应该尝试在触发命令之前在变量中定义函数!像这样的东西:

window.clickFunction=function(
    $('#card-modal-body').html('<p><i class="fa fa-spinner fa-spin"></i> Ricerca del lettore e card, attendere&hellip;</p>');

var req = '"CWD2";"';

$.post(base_url()+'config/RichiestaTCPIP', {array:req}, function(status){
  if(status == 'err'){
    console.error('Errore: controller file config.php funzione di linea #117');
  }else{
    console.log('Status: '+status)

    switch(status){
      case '0':
        attendi_e_riprova('<i class="fa fa-ban text-danger"></i> Lettore NON disponibile. Assicurarsi che sia collegato.');
      break;
      case '1':
        attendi_e_riprova('Lettore vuoto. Inserire una card vergine per poterla scrivere.');
      break;
      case '4':
        attendi_e_riprova('<i class="fa fa-check text-success"></i> Card trovata. In attesa di riconoscimento...');
      break;
      case '5':
        attendi_e_riprova('<i class="fa fa-ban text-danger"></i> Card in scrittura. Attendere completamento.');
      break;
      default:
        //Nuova richiesta per la creazione card (per status 2 o 3)
        scriviCard();
        //console.log(status)
      break;
    }
  }});

然后当你想要调用它时,请使用它:

$('#print_card').click(window.clickFunction);

window.clickFunction.trigger();

注意:你必须将变量定义为全局变量,并且必须在触发或点击线之前定义!

让我知道它是怎么回事。