$ .getJSON函数传递参数

时间:2012-11-26 21:40:37

标签: javascript jquery

我对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 ");                
}

有人可以解释这个问题吗?我知道它可能是显而易见的,但我只是无法找到答案。

5 个答案:

答案 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