我有一张登记表,正在使用$。Ajax来提交。

这是我的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文件中,我检查了数据库中字段电子邮件地址和用户名的存在。 我希望显示一个错误消息,如果这些值存在而不刷新页面。

我如何将此添加到我的AJAX请求的成功回调?


当前回答

结果可能不是JSON格式,所以当jQuery试图解析它时,它会失败。你可以用error: callback函数来捕捉错误。

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

其他回答

必须同时声明Success和Error回调。添加

error: function(err) {...} 

应该能解决问题

结果可能不是JSON格式,所以当jQuery试图解析它时,它会失败。你可以用error: callback函数来捕捉错误。

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

我试图从控制器返回字符串,但为什么控制返回错误块不成功的ajax

var sownum="aa";
$.ajax({
    type : "POST",
    contentType : 'application/json; charset=utf-8',
    dataType : "JSON",
    url : 'updateSowDetails.html?sownum=' + sownum,
    success : function() {
        alert("Wrong username");
    },
    error : function(request, status, error) {

        var val = request.responseText;
        alert("error"+val);
    }
});

虽然这个问题已经解决了,但我还是希望它能帮助到其他人。

我犯了一个错误,试图直接使用这样的函数(success: 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;
  }

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

确保在PHP文件中生成JSON格式的数据之前不打印(回显或打印)任何文本/数据。这可以解释,你得到一个-成功200 OK-但你的成功事件仍然失败在你的javascript。可以通过检查firebug中POST submit1.php的“Network - Answer”部分来验证脚本接收的内容。