这是我自定义的jQuery函数:
(function($){
$.fn.NotYet = function(arti_id) {
this.append(function() {
var result = 0;
$.post("comment_load.php", {arti_id:arti_id, status:1}, function(data){
console.log(data); // Returns data from POSTed PHP file
console.log(result); // Returns 0
//$(this).append(result); // Not Working
result = data;
console.log(result); // Returns data from POSTed PHP file
});
console.log(result); // Returns 0
return result; // Returns 0
});
return this; // Returns 0
};
})(jQuery);
我正在这样调用函数:
$("div#Comments").NotYet(15);
我正在尝试制作jQuery函数,但无法将发布的php文件数据返回到<div>
容器中。
有什么建议吗?
FYI:这个问题很相似,但是我不明白发生了什么,我需要一个简单的方法。 How do I return the response from an asynchronous call?
答案 0 :(得分:1)
$.post
是一种异步方法,它无法返回任何内容。而您的问题是在ajax调用结束之前设置了结果值。这就是为什么console.log的值为0
。
this
元素内为无效元素。因此,您需要在传递给var that = this
之类的成功函数之前声明另一个变量代码:
(function($) {
$.fn.NotYet = function(arti_id) {
this.append(function() {
var that = this;
var result = 0;
$.post("comment_load.php", {
arti_id: arti_id,
status: 1
}, function(data) {
console.log(data); // Returns data from POSTed PHP file
$(that).append(data); //its work
result = data;
});
console.log(result); // Returns 0 //its excute before ajax call
return result; // its not possible
});
};
})(jQuery);