jquery插件中的$.ajax未更新变量
小提琴: 我遇到的问题是,在执行$.ajax时,title变量没有更新/更改,我知道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
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);