Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/403.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过指针调用带参数的Javascript函数?_Javascript_Ajax_Jquery_Javascript Events - Fatal编程技术网

通过指针调用带参数的Javascript函数?

通过指针调用带参数的Javascript函数?,javascript,ajax,jquery,javascript-events,Javascript,Ajax,Jquery,Javascript Events,在传递参数时,如何使用函数指针在Javascript中调用函数 例如: function foo (a, callback) { jQuery.post('/soon/check.json', { var:a }, function(resp) { callback(resp); }); } function process_json(resp) { // Do something with resp } foo(bar, pr

在传递参数时,如何使用函数指针在Javascript中调用函数

例如:

function foo (a, callback) {    
        jQuery.post('/soon/check.json', { var:a }, function(resp) {
             callback(resp);
    }); 
}

function process_json(resp) {
  // Do something with resp
}

foo(bar, process_json);
“process_json”永远不会被调用。在Firebug中,字符串“process_json”被传递到“foo”中,但我假设这表示指向函数“process_json”的指针

在Javascript中,是否不可能通过指针和传入参数来调用函数

在Javascript中,是否不可能通过指针和传入参数来调用函数

这当然是可能的。我觉得你的代码一切都很好。您确定正在调用
$.post()
回调(匿名函数)吗?调用
foo
时,
bar
是否未定义


为了澄清这一点,我们需要使用字符串(而不是函数指针)调用函数。这可能吗

对。如果函数是全局定义的,则可以将其作为
窗口
对象上的属性调用,如下所示:

function foo () { /* snip */ }

var fn_name = 'foo';

window.foo();       // works
window['foo']();    // works
window[fn_name]();  // also works
在Javascript中,是否不可能通过指针和传入参数来调用函数

这当然是可能的。我觉得你的代码一切都很好。您确定正在调用
$.post()
回调(匿名函数)吗?调用
foo
时,
bar
是否未定义


为了澄清这一点,我们需要使用字符串(而不是函数指针)调用函数。这可能吗

对。如果函数是全局定义的,则可以将其作为
窗口
对象上的属性调用,如下所示:

function foo () { /* snip */ }

var fn_name = 'foo';

window.foo();       // works
window['foo']();    // works
window[fn_name]();  // also works
试试这个:

函数
警报
通过引用传递给foo:

function foo(fref)
{
   fref("hi world");
}

foo(alert);
如您所见,它可以正常工作。

尝试以下方法:

函数
警报
通过引用传递给foo:

function foo(fref)
{
   fref("hi world");
}

foo(alert);

正如您所看到的,它可以正常工作。

当然,您可以将函数作为回调传入,实际上是通过

jQuery.post('/soon/check.json', { var:a }, function(resp) {...
您正在传递一个回调,该回调将在post之后调用

所以问题出在别的地方。是否真的调用了传递给
$.post
的匿名函数


希望这会有所帮助

当然,您可以通过执行

jQuery.post('/soon/check.json', { var:a }, function(resp) {...
您正在传递一个回调,该回调将在post之后调用

所以问题出在别的地方。是否真的调用了传递给
$.post
的匿名函数



希望这会有所帮助

没有理由将
回调
包装在匿名函数中
$.post('/soon/check.json',{var:a},callback)
也应该可以工作。您确定ajax调用成功吗?如果出现错误,那么您的回调将不会命中。jQuery.post的回调包含三个参数,第二个参数是描述请求状态的文本消息。在不检查请求是否成功以及结果是否有效的情况下进行AJAX调用是非常糟糕的编程实践。@Rob对
$的回调。post()
仅在成功时调用。blush-Ouch,你是对的。因此,OP需要重新考虑事件。没有理由在匿名函数中包装<代码>回调< /代码>。code>$.post('/soon/check.json',{var:a},callback)也应该可以工作。您确定ajax调用成功吗?如果出现错误,那么您的回调将不会命中。jQuery.post的回调包含三个参数,第二个参数是描述请求状态的文本消息。在不检查请求是否成功以及结果是否有效的情况下进行AJAX调用是非常糟糕的编程实践。@Rob对
$的回调。post()
仅在成功时调用。blush-Ouch,你是对的。因此,OP需要重新考虑事件。是,正在调用jQuery.post()。这个错误也让我们困惑。唯一没有提到的是foo和process_json在不同的javascript文件中,但是process_json对foo是可用的(一个javascript文件包含在foo所在的页面中,process_json就是这个文件所在的页面)。@Crash:实际的
$.post
是否通过
{var:a}
?这肯定会破坏一切,因为
var
是一个关键词。对不起,我是个白痴。我们传递的是字符串而不是函数指针。。。我会删除这个问题,因为它太愚蠢了,不能继续这样做,但我觉得我应该奖励积分给某人。很抱歉浪费时间,哈哈。为了澄清,我们需要使用字符串调用函数——而不是函数指针。这可能吗?已定义条。是,正在调用jQuery.post()。这个错误也让我们困惑。唯一没有提到的是foo和process_json在不同的javascript文件中,但是process_json对foo是可用的(一个javascript文件包含在foo所在的页面中,process_json就是这个文件所在的页面)。@Crash:实际的
$.post
是否通过
{var:a}
?这肯定会破坏一切,因为
var
是一个关键词。对不起,我是个白痴。我们传递的是字符串而不是函数指针。。。我会删除这个问题,因为它太愚蠢了,不能继续这样做,但我觉得我应该奖励积分给某人。很抱歉浪费时间,哈哈。为了澄清,我们需要使用字符串调用函数——而不是函数指针。这是可能的吗?哈哈,是的,但不是以同样的方式。OP传递的是字符串
“alert”
而不是文本
alert
c-smile是正确的。我们传入的是函数指针,不是字符串。但由于某些原因,它看起来像Firebug中的一条字符串(尽管我们可能没有仔细研究Firebug)。我们绝对不是(故意)传递字符串。只有函数指针。@Neal不,我不相信OP传递的是字符串。@MattBall-我引用:
“process_json”字符串传递到了“foo”,“对不起,我是个白痴。”。我们传递的是字符串而不是函数指针。。。我会删除这个问题,因为它太愚蠢了,不能继续这样做,但我会继续