首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Ajax成功事件不起作用

Ajax成功事件不起作用
EN

Stack Overflow用户
提问于 2009-12-28 21:31:05
回答 16查看 322.3K关注 0票数 212

我有一个注册表,正在使用$.ajax提交它。

这是我的请求:

$(document).ready(function() {
    $("form#regist").submit(function() {
        var str = $("#regist").serialize();
        $.ajax({
            type: 'POST',
            url: 'submit1.php',
            data: $("#regist").serialize(),
            dataType: 'json',
            success: function() {
                $("#loading").append("<h2>you are here</h2>");
            }        
        });
        return false;        
    });
});

在我的submit1.php文件中,我检查数据库中是否存在字段email address和username。如果这些值在没有页面刷新的情况下存在,我希望显示一条错误消息。

如何将其添加到AJAX请求的成功回调中?

EN

回答 16

Stack Overflow用户

回答已采纳

发布于 2009-12-28 21:41:57

结果可能不是JSON格式,所以当jQuery尝试这样解析它时,它会失败。您可以使用error:回调函数来捕获错误。

无论如何,在该函数中似乎不需要JSON,所以也可以去掉dataType: 'json'行。

票数 416
EN

Stack Overflow用户

发布于 2010-09-19 21:12:06

虽然这个问题已经解决了,但我补充这一点是希望它能对其他人有所帮助。

我犯了一个错误,并尝试直接使用这样的函数(成功: OnSuccess(productID))。但是你必须先传递一个匿名函数:

  function callWebService(cartObject) {

    $.ajax({
      type: "POST",
      url: "http://localhost/AspNetWebService.asmx/YourMethodName",
      data: cartObject,
      contentType: "application/x-www-form-urlencoded",
      dataType: "html",
      success: function () {
        OnSuccess(cartObject.productID)
      },
      error: function () {
        OnError(cartObject.productID)
      },
      complete: function () {
        // Handle the complete event
        alert("ajax completed " + cartObject.productID);
      }
    });  // end Ajax        
    return false;
  }

如果不使用匿名函数作为包装器,则即使the服务返回异常,也会调用OnSuccess。

票数 21
EN

Stack Overflow用户

发布于 2011-03-19 21:35:48

我尝试删除dataType行,但对我不起作用。我通过使用"complete“而不是"success”作为回调来解决这个问题。在IE中,成功回调仍然失败,但由于我的脚本无论如何都会运行和完成,所以我所关心的就是这些。

$.ajax({
    type: 'POST',
    url: 'somescript.php',
    data: someData,
    complete: function(jqXHR) {
       if(jqXHR.readyState === 4) {
          ... run some code ... 
       }   
    }        
 });

在jQuery 1.5中,你也可以这样做。

var ajax = $.ajax({
    type: 'POST',
    url: 'somescript.php',
    data: 'someData'
});
ajax.complete(function(jqXHR){
    if(jqXHR.readyState === 4) {
        ... run some code ... 
    }
});
票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1969476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档