为什么我的回调只在一页上被调用?
这可能真的很明显,但我无法弄清楚。为什么我的回调只在一页上被调用?
我使用jQuery来获取一些JSON,然后将其插入一些元素并将其显示在我的页面上。
它工作正常all pages除了one,其中响应似乎是页面本身。
我已经把alert()
S IN的回调(success
和complete
),他们似乎从来没有被解雇(虽然萤火虫显示请求返回200 OK
这应该触发success
处理)。
我不知道该怎么做,我从来没有遇到过这个。
这里是我使用jQuery代码...
var specials = (function() {
var specials = false,
specialsAnchor;
var init = function() {
specialsAnchor = $('#menu-specials a');
specialsAnchor.click(function(event) {
event.preventDefault();
if (specials != false && specials.is(':visible')) {
hide();
} else {
show();
}
});
};
var load = function(callback) {
specialsAnchor.addClass('loading');
specials = $('<div />', { 'id': 'specials' }).hide().appendTo('#header');
var specialsUl = $('<ul />').appendTo(specials);
$.ajax(specialsAnchor.attr('href'), {
dataType: 'json',
success: function(data) {
$.each(data, function(i, special) {
specialsUl.append('<li><h4>' + special.heading + '</h4><p>' + special.content + '</p></li>');
});
specialsAnchor.removeClass('loading');
callback.call();
}
});
}
var show = function() {
if (specials == false) {
load(show);
return;
}
specials.slideDown(500);
}
var hide = function() {
specials.slideUp(500);
}
$(init);
})();
这是怎么回事?
谢谢。
我注意到你在这个页面上包含了jquery.validate,但没有包含其他的。 jQuery使用AJAX调用验证jQuery> 1.5 causes some issues。
我意识到链接的问题并不完全是你所看到的,但我已经看到AJAX调用和验证和jQuery的这种组合的各种奇怪问题,所以我认为这将是值得一提的。
希望有所帮助。
我永远不会想到我自己!非常感谢:) – alex 2011-04-19 02:35:27
@alex:很高兴帮助!现在,我想因某种原因去度假,但...... – 2011-04-19 02:36:19
这可能不是一个完整的答案,但可能是朝着正确方向迈出的一步。使用Charles Proxy似乎在其他网页,当我点击特价商品,它使请求http://www.toberua.com/~new/specials但是接触我们页面的AJAX请求而不是去http://www.toberua.com/~new/contact-us(当然这不是JSON)其他
一个有趣的: 其他页面上的XMLHttpRequest正确设置了Accept头(即,而在contact-us页面上它设置为Accept */*
)。我敢打赌有一个不同的代码分支被调用...
谢谢,我已经想出了那部分。现在只需要知道,为什么? – alex 2011-04-19 02:18:03
其中'data.basePath'来自...我没有看到'data'定义在任何地方。 Nevermind ..它是一个全球... – prodigitalson 2011-04-19 02:15:31
@prodigitalson说了什么,并在一个侧面说明,我会认为这是某种URL /层次结构问题。 – mattsven 2011-04-19 02:16:21
@prodigitalson它在'head'元素中定义。 – alex 2011-04-19 02:17:33