【发布时间】:2011-11-18 20:16:37
【问题描述】:
好吧,这看起来很荒谬,我知道从技术上讲为什么会发生这种情况,但必须有办法解决它!
问题如下:
我有一个 javascript 对象,在创建后,您可以调用一个方法并提交一个 ajax 请求,然后它们返回 false。对象的代码在另一个文件中。
这是对象:
function AjaxHandler(groupid, typeid, currentLocation, controllerUrl) {
this.groupId = groupid || 0;
this.typeId = typeid || 0;
this.href = currentLocation || '';
this.method = controllerUrl;
}
AjaxHandler.prototype.Submit = function () {
var queryString = this.href.split('?')[1];
var newHref = this.method;
if (queryString != null && queryString != undefined)
newHref = newHref + "?" + queryString
$.ajax({
type: "post",
url: newHref,
contentType: "application/x-www-form-urlencoded",
error: function (xhr, type, exception) {
console.log("Error occurred in AjaxHandler.Submit. Type: " + type + " Exception: " + exception);
}
});
return false;
};
我在索引页面上的脚本块中调用此方法。它在 .ready 期间设置的 jquery 'live' 中调用。这是 .ready 代码:
$(document).ready(function () {
SetShowMoreResultsFeatures();
$(".tabs a").live('click', function (e) {
var href = $(this).attr('href');
var queryString = href.split('?')[1];
var queryStringValue = '';
if (queryString != null)
queryStringValue = queryString.split('=')[1];
var tabHandler = new AjaxHandler(null, queryStringValue, href, '/home/GetCasesByType');
tabHandler.Submit();
//return false;
});
});
如你所见,上面代码中的'return false'被注释掉了,'AjaxHandler'对象中出现了return false。如果我注释掉对象中的那个并取消注释“就绪”中的那个,页面不会闪烁,一切都很好。如果我保持原样,页面就会闪烁。
我对此进行了研究,虽然人们也有类似的问题,但似乎都是直接在“实时”设置中围绕 ajax 调用。
关于如何使其正常工作的任何见解。这个对象应该足够通用,可以在我们的选项卡结构需要 ajax 的任何情况下使用,因此在方法调用中保持“return false”而不是“live”很重要。
【问题讨论】: