gpt4 book ai didi

javascript - jQuery:如何在不丢失默认参数的情况下将参数添加到回调函数

转载 作者:行者123 更新时间:2023-11-30 07:40:59 25 4
gpt4 key购买 nike

我有这个代码:

var callbackAfterLoad = function(data, ecBlock) {
ecBlock.html(data);
ecBlock.slideDown();
}

function bindevents(userInput, ecBlock, callbackAfterLoad) {
userInput.keyup(function () {
delay(function () {
$.post("/preview", {content:userInput.val()}, callbackAfterLoad(data, ecBlock));
}, 500);
});
}

还有这个错误:

Uncaught ReferenceError: data is not defined 

但是当我查看 jQuery 示例时

$.post("test.php", function(data) {
alert("Data Loaded: " + data);
});

为什么会出现这个错误?为什么 jQuery 示例可以运行,而我的却不行? (我们不能添加参数?)。是否定义了默认的 $.post 回调并且他的签名不能被覆盖?

最佳答案

$.post 中的第三个参数应该是一个函数,但是当你这样做时:

$.post("/preview", {content:userInput.val()}, callbackAfterLoad(data, ecBlock))

第三个参数不是函数,而是函数的返回值。像这样:

fn = callbackAfterLoad   // function reference
fn = callbackAfterLoad() // function execution and return value reference

并且在您的示例中执行时,data 尚不可用。正确的语法是:

$.post("/preview", {content:userInput.val()}, callbackAfterLoad)

如果您需要将自定义参数传递给您的回调,您可以像这样创建一个新的代理函数:

var callback = function(data) {
callbackAfterLoad.call(this, data, ecBlock);
};
$.post("/preview", {content:userInput.val()}, callback);

关于javascript - jQuery:如何在不丢失默认参数的情况下将参数添加到回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17249957/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com