Jquery插件-使ajax调用链
jquery plugin - make ajax call chainable
我正在尝试写一个jquery插件。
现在,我想在这个插件的一个函数中使用ajax调用。
然而,它应该是可链接的,这意味着在这种情况下,ajax调用应该被执行,只有在返回一些东西之后,才应该发生返回。
我尝试了不同的东西,但到目前为止,我不能使它,所以在链中的第二个函数是真正执行ajax调用的返回值后检索;
在这个版本中(见下文)我可以使用
$(文档).createDatabase () .message ();
所以,链接起作用了。但是查看控制台日志- message()函数在createDatabase()中的ajax调用完成之前执行。
我怎样才能使它
$(文档).createDatabase () .message ();
首先返回在createDatabase()内部的ajax调用的输出/返回,并且仅在该消息()执行之后?
代码:(function($) {
$.fn.createDatabase = function(options) {
// Plugin options defaults
var settings = $.extend({
name: 'NA',
onExit: function() {} // callback function
}, options);
$.ajax({
method: "POST",
url: "plugin/php/createDatabase.php",
data: settings
})
.done(function(msg) {
console.log("createDatabase executed with message: " + msg);
settings.onExit.call();
});
return this;
};
$.fn.message = function() {
console.log('this should appear after the console-log message of createDatabase');
return this;
}
}(jQuery));
谢谢!
您可以做一些事情,但它们都是一个坏主意。原因是这是两个独立的jQuery插件——一个插件应该能够独立工作。没有理由保证有人不做.message().createDatabase()
。如果你需要保证执行的顺序,那么你应该只用一个插件。一种可能的方法是在调用.createDatabase(options)
时将message
传递到options
内部,然后在调用完成时运行message
。就像
$(document).createDatabase({
message: function() {...}
});
...
var promise = $.ajax({
method: "POST",
url: "plugin/php/createDatabase.php",
data: settings
})
.done(function(msg) {
console.log("createDatabase executed with message: " + msg);
settings.onExit.call();
});
...
if ( settings.message )
promise.done( settings.message.bind(this) );
我尝试了不同的东西,但到目前为止,我不能使它,所以在链中的第二个函数是真正执行ajax调用的返回值后检索;
第二个函数在第一个函数结束时执行。第一个以return this
结束,但这发生在ajax调用完成之前,因为ajax调用是异步的。
相关文章:
- 阻止在select2单击时调用ajax
- 调用Ajax并返回响应
- Ajax:只在元素存在的情况下调用Ajax
- PHP,MySQL,AJAX-调用AJAX结果后,Bootstrap CSS样式不会显示
- 调用Ajax内部的函数
- 无法获取属性'的值;拆分'在IE8中调用ajax之后
- 我们如何在Firefox中调用AJAX
- Rails:通过调用Ajax重定向
- Cookie 在 Spotify (Javascript) 中调用 ajax 后未保存
- 通过调用 Ajax 来设置 struts bean 值
- 无法从服务器中的 php 调用 Ajax 函数
- 如何在附加表行时调用 ajax
- 在facebook用户发送邀请请求后调用ajax调用
- 定期调用Ajax
- 调用Ajax生成的表单的值
- 无法调用ajax函数
- 在调用AJAX之后显示ng控制器的内容;作为“;作用
- CSS,Java脚本在php中调用ajax后无法正常工作
- 成功调用AJAX后,Toast Growl不会出现
- 如何在调用AJAX时记录或捕获信息和错误