Max*_*ard 1 javascript jquery jquery-callback
我有这个代码:
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);
});
}
Run Code Online (Sandbox Code Playgroud)
而这个错误:
Uncaught ReferenceError: data is not defined
Run Code Online (Sandbox Code Playgroud)
但是当我查看jQuery示例时
$.post("test.php", function(data) {
alert("Data Loaded: " + data);
});
Run Code Online (Sandbox Code Playgroud)
为什么我会收到此错误?为什么jQuery示例工作而不是我的?(我们不能添加参数?).是否定义了默认的$ .post回调并且他的签名无法覆盖?
第三个参数$.post应该是一个函数,但是当你这样做时:
$.post("/preview", {content:userInput.val()}, callbackAfterLoad(data, ecBlock))
Run Code Online (Sandbox Code Playgroud)
第三个参数不是函数,而是函数的返回值.像这样:
fn = callbackAfterLoad // function reference
fn = callbackAfterLoad() // function execution and return value reference
Run Code Online (Sandbox Code Playgroud)
在您的示例中执行时,data尚不可用.正确的语法是:
$.post("/preview", {content:userInput.val()}, callbackAfterLoad)
Run Code Online (Sandbox Code Playgroud)
如果需要将自定义参数传递给回调,可以创建一个新的代理函数,如下所示:
var callback = function(data) {
callbackAfterLoad.call(this, data, ecBlock);
};
$.post("/preview", {content:userInput.val()}, callback);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8118 次 |
| 最近记录: |