无法在jQuery函数中返回$ .posted php文件数据

时间:2019-04-15 03:41:46

标签: javascript php jquery function

这是我自定义的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?

1 个答案:

答案 0 :(得分:1)

$.post是一种异步方法,它无法返回任何内容。而您的问题是在ajax调用结束之前设置了结果值。这就是为什么console.log的值为0

  1. 所以您需要在成功函数的回调中进行设置。
  2. 在回叫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);