setTimeout函数中的错误返回Uncaught SyntaxError:意外的标识符

时间:2019-07-02 15:51:01

标签: javascript jquery prestashop-1.6

我正在使用Prestashop 1.6,并且在路径theme/mytheme/js/autoload/shopflores.js中有一个javascript文件,该文件返回错误。代码:

setTimeout(
  $.ajax({
    type: 'get',
    url: urlformChx,
    async: true,
    cache: false,
    data: {
      ajax: true,
      token: token,
      idcart: idCart,
      method: 'getCurrentShop'
    },
    success: function(resultx) {
      console.log(resultx);
      obj = JSON.parse(resultx);
      r = obj.region;

      if (obj.code == '200' && r != null) {
        $('#order-opc #uniform-regshopflores > span').text(obj.region);
        $("#regshopflores option").each(function() {
          if ($(this).text() == obj.region) {
            $(this).attr('selected', true);
          }
        });

        $('#order-opc .delivery_option_radio').parent('span').removeClass('checked');
        $('#order-opc .delivery_option_radio').removeAttr("checked");

        $('#uniform-seltiendaflores > span').text(obj.tienda);
        $("#seltiendaflores option").text(obj.tienda);

        $.each($("input.delivery_option_radio"), function() {
          //console.log($(this)); 
          var idx = obj.carrier + ',';
          if ($(this).val() == idx) {
            console.log(idx);
            $(this).parent('span').addClass('checked');
            $(this).attr('checked', 'checked');
          }
        });
      }
    }
  }), 5000);

在Google Chrome控制台中进行测试会返回此错误消息:

  

VM667:1未捕获的语法错误:意外的标识符
      setTimeout(异步)
      (匿名)@ shopflores.js:113
      派遣@ jquery-1.11.0.min.js:3
      r.handle @ jquery-1.11.0.min.js:3
      触发@ jquery-1.11.0.min.js:3
      e.event.trigger @ jquery-migrate-1.2.1.min.js:2
      (匿名)@ jquery-1.11.0.min.js:3
      每个@ jquery-1.11.0.min.js:2
      每个@ jquery-1.11.0.min.js:2
      触发@ jquery-1.11.0.min.js:3
      准备好了@ jquery-1.11.0.min.js:2
      K @ jquery-1.11.0.min.js:2

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

setTimeout()需要一个函数,但是您正在向其提供$.ajax()对象的jqXHR调用结果。这样,当JS尝试将对象作为函数调用时,您会收到错误消息。

要解决此问题,请将AJAX逻辑放在您提供的匿名函数中,该匿名函数用作setTimeout()的参数:

setTimeout(function() {
  $.ajax({
    // your AJAX call here...
  })
}, 5000);