Javascript Chrome说我正在使用非法函数调用
我试图编写一些Javascript代码,其中包含一个调用另一个函数的函数。出于某种原因,我在Chrome开发工具中收到一条错误消息,在第6行显示“UncaughtTypeError:非法调用”。然而,函数getRequest似乎仍然执行,并将“h”记录到控制台。这是怎么回事Javascript Chrome说我正在使用非法函数调用,javascript,jquery,function,invocation,Javascript,Jquery,Function,Invocation,我试图编写一些Javascript代码,其中包含一个调用另一个函数的函数。出于某种原因,我在Chrome开发工具中收到一条错误消息,在第6行显示“UncaughtTypeError:非法调用”。然而,函数getRequest似乎仍然执行,并将“h”记录到控制台。这是怎么回事 $(document).ready(function(){}); $(function(){ $('#search').click(function(event){ event.preventDefault();
$(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");
});
}
函数“getRequest”有一个“searchTerm”属性,您在调用函数时没有传递任何属性
$(function(){
$('#search').click(function(event){
event.preventDefault();
var searchTerm = $('#query').val();
getRequest(); // Here is the problem
});
});
您正在将JQuery对象作为参数传递,而JQuery无法序列化它:
key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
q: $('#searchbox') //searchTerm
};
如果它是一个输入,您可以使用.val()
或
只需使用您在方法中接收的参数(这就是您创建它的原因,不是吗?)
然后
错误发生在哪一行?您打算如何处理
q:$(“#searchbox”)
?它将jQuery对象作为URL参数传递,这毫无意义。你的意思是q:seachTerm
?只是想知道:为什么你在第5行得到searchTerm,然后不把它作为getRequest()的参数?顺便说一句,你代码的第一行什么都不做<代码>$(处理程序)执行与$(文档).ready(处理程序)
相同的操作。看,所以我用LcSalazar的答案解决了。如果有人能给我一些关于为什么我的问题一直被否决的反馈,我将不胜感激。我认为这是一个很好的问题,如果没有反馈,我真的没有任何选择,只能继续发布可能会被否决的问题,直到我被禁止。我想你指的是参数,而不是属性。这可能是一个问题,但不会导致他得到的错误。它只会将参数设置为undefined
。此外,错误消息有点令人困惑。您必须将其解释为“此异常发生在调用堆栈中此调用下面的某个位置”。也就是说,非法调用发生在执行getRequest()
时的某个点。谢谢,这回答了我最初的问题。然而,现在我收到另一条错误消息,这条消息在第4行说,“uncaughttypeerror:cannotreadproperty'length'of undefined”。我一点也不知道它在说什么。@FrankTocci-如果你有其他问题,请随意发布另一个问题,针对具体的错误,以免混淆主题。
key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
q: $('#searchbox').val() //searchTerm
};
getRequest(searchTerm);
key: 'AIzaSyC7oHGfvlIMoEnboos6LZ2b2h_KpPu0u1Q',
q: searchTerm
};