我对JavaScript有一个简单的问题:
我有以下代码行显示示例,它工作正常。你可以访问传递数据没有问题。
$.getJSON(jsonUrl,function(passeddata){
alert("it worked ");
});
下一个代码示例不起作用,但失败并显示以下错误:
未捕获TypeError:Object ReferenceError:未定义passeddata 没有方法'替换'jq.html:177(匿名函数)
$.getJSON(jsonUrl, something(passeddata));
function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");
}
有人可以解释这个问题吗?我知道它可能是显而易见的,但我只是无法找到答案。
答案 0 :(得分:6)
在第一种情况下,您将函数传递给getJSON
,当JSON的HTTP请求返回时,该函数将被执行。
在第二个中,您立即调用该函数并将其返回值传递给getJSON
。
请勿自行调用,取走()
:$.getJSON(jsonUrl, something);
答案 1 :(得分:4)
尝试更改第二个实例,只是将回调传递给getJSON方法。 passdata还不存在所以你只需要给出函数名称:
$.getJSON(jsonUrl, something);
function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");
}
答案 2 :(得分:3)
$.getJSON(jsonUrl, something);
function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");
}
这应该是这样的。使用第二个参数,您只需告诉指向应该执行的函数的指针。在您的代码函数中立即执行
答案 3 :(得分:2)
你将“某事(传递数据)”的结果作为第二个参数传递给getJSON函数调用
答案 4 :(得分:1)
您不希望将something(passeddata)
置于调用函数并使用其返回值作为回调。你想要的只是这个:
$.getJSON(jsonUrl, something);
请注意,参数名称在用作参数时无关紧要,因此您仍然可以在函数本身中使用passeddata
。