【问题标题】:Returning false after javascript ajax call does not seem to workjavascript ajax 调用后返回 false 似乎不起作用
【发布时间】: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”很重要。

【问题讨论】:

    标签: jquery ajax object


    【解决方案1】:

    我建议不要返回 false,而是为此使用 propper jQuery 方法。

    在你的情况下是

    e.preventDefault();
    

    如果您坚持使用上述代码,则无需在两种方法中都返回 false,但需要在 final 方法中返回 false。

    在这种情况下,我要做的是返回提交调用的结果。

    return tabHandler.Submit(); // which is returning false
    

    【讨论】:

    • 使用您的第一个建议,我刚刚将事件传递给“提交”方法,它似乎有效。伙计,这太容易了,我很惭愧;)。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2011-01-13
    • 2023-03-27
    • 2012-01-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多