Chrome说我正在使用非法的函数调用

Chrome says I am using illegal function invocation

本文关键字:非法 函数调用 Chrome      更新时间:2023-10-11

我正在尝试编写一些涉及调用另一个函数的函数的Javascript代码。出于某种原因,我在Chrome开发工具中的第6行收到一条错误消息,上面写着"Uncaught TypeError:非法调用"。然而,函数getRequest似乎仍然在执行,并将"h"记录到控制台。这是怎么回事?

$(document).ready(function(){});
$(function(){
  $('#search').click(function(event){
    event.preventDefault();
    var searchTerm = $('#query').val();
    getRequest();
  });
});
function getRequest(searchTerm){
  console.log("h");
  var params = {
    part: 'snippet',
    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox') //searchTerm
  };
  url = 'https://www.googleapis.com/youtube/v3/search';
  $.getJSON(url, params, function(data){
    showResults(data.Search);
    //console.log("x");
  });
}

您正在传递一个JQuery对象作为参数,而JQuery无法序列化它:

    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox') //searchTerm
};

如果是输入,可以使用.val() 传递其值

    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: $('#searchbox').val() //searchTerm
};

只需使用您在方法中接收的参数(这就是您创建它的原因,不是吗?)

getRequest(searchTerm);

然后

    key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
    q: searchTerm
};

您的函数"getRequest"有一个"searchTerm"属性,您在调用函数时没有传递任何属性。

$(function(){
  $('#search').click(function(event){
    event.preventDefault();
    var searchTerm = $('#query').val();
    getRequest(); // Here is the problem
  });
});