Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/svg/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jquery插件中的$.ajax未更新变量_Ajax_Jquery_Jquery Plugins - Fatal编程技术网

jquery插件中的$.ajax未更新变量

jquery插件中的$.ajax未更新变量,ajax,jquery,jquery-plugins,Ajax,Jquery,Jquery Plugins,小提琴: 我遇到的问题是,在执行$.ajax时,title变量没有更新/更改,我知道ajax调用正在工作,因为我已经尝试替换该行 title=$(xml).find(“title”).text() 与 console.log($(xml.find(“title”).text()) 当然,它确实会返回标题,但是当使用原始行时,变量title不会更改 我已经尝试过,将ajax调用放到外部(函数($){})(jQuery)确实有效 我尝试了下面的方法,还尝试了将ajax包装到函数中,例如getTitl

小提琴:

我遇到的问题是,在执行$.ajax时,title变量没有更新/更改,我知道ajax调用正在工作,因为我已经尝试替换该行

title=$(xml).find(“title”).text()

console.log($(xml.find(“title”).text())

当然,它确实会返回标题,但是当使用原始行时,变量title不会更改

我已经尝试过,将ajax调用放到外部(函数($){})(jQuery)确实有效

我尝试了下面的方法,还尝试了将ajax包装到函数中,例如getTitle(){ajax代码在此返回title;}

(function($) {
    $.fn.getPost = function(options) {
        var $this = $(this);
        var defaults = {
            method: "html",
            blogID: "",
            postID: "",
            done: null
        };
        var options = $.extend(defaults, options);
        var title;
        getAjax();
        return $this.each(function() {
            if (options.done) {
                options.done.call(undefined, title);
            }
        });

        function getAjax() {
            $.ajax({
                type: "GET",
                url: "http://www.blogger.com/feeds/724793682641096478/posts/default/3551136550258768001",
                dataType: "xml",
                dataType: 'jsonp',
                async: false,
                success: function(xml) {
                    title = $(xml).find("title").text();
                }
            });
        }
    };
})(jQuery);

对不起,我花了很多时间试图弄明白这一点(我不是因为懒惰才问的:p),不管对我感兴趣的人有什么解决办法:)


返回几乎总是在AJAX请求调用提供给success的函数之前发生。@nhahtdh几乎不。。。为什么总是
完成
?呼叫不应该在
成功
中吗?当请求失败时,
complete
也会被调用。哦,对不起:/这不是我插件的全部内容,当出现错误时它会传递一个参数,我的坏消息应该提到我不知道,这是你自己解决问题的方法,所以你最清楚。我只是觉得很奇怪,但如果这是你的要求,那么应该可以。
(function($) {
    $.fn.getPost = function(options) {
        var $this = $(this);
        var defaults = {
            method: "html",
            blogID: "",
            postID: "",
            done: null
        };
        var options = $.extend(defaults, options);
        var title;
        getAjax();
        return $this.each(function() {
            if (options.done) {
                options.done.call(undefined, title);
            }
        });

        function getAjax() {
            $.ajax({
                type: "GET",
                url: "http://www.blogger.com/feeds/724793682641096478/posts/default/3551136550258768001",
                dataType: "xml",
                dataType: 'jsonp',
                async: false,
                success: function(xml) {
                    title = $(xml).find("title").text();
                }
            });
        }
    };
})(jQuery);
(function($) {
    $.fn.getPost = function(options) {
        var $this = $(this);
        var defaults = {
            method: "html",
            done: null
        };
        var options = $.extend(defaults, options);
        var title;
        var sorf;
        $.ajax({
            type: "GET",
            url: "http://www.blogger.com/feeds/724793682641096478/posts/default/3551136550258768001",
            dataType: "xml",
            dataType: 'jsonp',
            success: function(xml) {
                title = $(xml).find("title").text();
                sorf = 1;
            },
            error: function(){
                sorf = 0;
            },
            complete: function() {
                returnvals(sorf);
            }
        });

        function returnvals(sorf) {
         if(sorf){
         //success
            return $this.each(function() {
                if (options.done) {
                    options.done.call(undefined, title);
                }
            });
         }else{// failure}
        }
    };
})(jQuery);