4

我有一个关于 JavaScript 的快速问题:

我有以下代码行显示了一个示例,它工作正常。您可以访问传递的数据,没有问题。

$.getJSON(jsonUrl,function(passeddata){
  alert("it worked ");
});

下一个代码示例不起作用并失败并出现以下错误:

未捕获的类型错误:对象引用错误:未定义传递的数据没有方法“替换”jq.html:177(匿名函数)

$.getJSON(jsonUrl, something(passeddata));

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}

有人可以解释这个问题吗?我知道这可能很明显,但我无法找到答案。

4

5 回答 5

6

在第一种情况下,您将传递一个函数getJSON,当 JSON 的 HTTP 请求返回时执行该函数。

在第二种情况下,您将立即调用该函数并将其返回值传递给getJSON.

不要自己打电话,()带走:$.getJSON(jsonUrl, something);

于 2012-11-26T21:43:29.997 回答
4

尝试更改第二个实例以将回调传递给 getJSON 方法。传递的数据还不存在,所以你只需给出函数名称:

$.getJSON(jsonUrl, something);

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}
于 2012-11-26T21:43:31.390 回答
3
$.getJSON(jsonUrl, something);

function something(passeddata)
{
var jasondata = passeddata;
alert("it worked ");                
}

这是应该的。使用第二个参数,您只需告诉一个指向应该执行的函数的指针。在您的代码中,函数立即执行

于 2012-11-26T21:43:45.330 回答
2

您将“something(passeddata)”的结果作为第二个参数传递给 getJSON 函数调用

于 2012-11-26T21:44:04.400 回答
1

您不希望something(passeddata)调用函数并将其返回值用作回调。你想要的只是这样:

$.getJSON(jsonUrl, something);

请注意,参数名称在用作参数时无关紧要,因此您仍然可以passeddata在函数本身中使用。

于 2012-11-26T21:44:11.060 回答