我有一张登记表,正在使用$。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请求的成功回调?


当前回答

当查询控制器不返回成功响应时,我也遇到了同样的问题,当修改控制器以返回成功消息时,问题得到了解决。 注意使用Lavalite框架。 之前:

public function Activity($id)
    {
        $data=getData();
        return
            $this->response->title('title')
                ->layout('layout')
                ->data(compact('data'))
                ->view('view')
                ->output();
    }
after code looks like:
    try {
            $attributes = $request->all();
            //do something
            return $this->response->message('')
                ->code(204)
                ->status('success')
                ->url('url'. $data->id)
                ->redirect();
        } catch (Exception $e) {
            return $this->response->message($e->getMessage())
                ->code(400)
                ->status('error')
                ->url('nothing Wrong')
                ->redirect()
        }

这对我很有效

其他回答

我试图从控制器返回字符串,但为什么控制返回错误块不成功的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);
    }
});

我正在返回有效的JSON,在我的“完整”回调中得到200的响应,并且可以在chrome网络控制台中看到它…但我没有具体说明

dataType: "json"

一旦我做了,不像“公认的答案”,这实际上解决了问题。

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

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

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

error: function(err) {...} 

应该能解决问题

我有这个问题使用ajax函数从Magento恢复用户密码。成功事件没有被解雇,然后我意识到有两个错误:

结果没有以JSON格式返回 我试图将数组转换为JSON格式,但这个数组有非utf字符

因此,每次我尝试使用json_eoncde()来编码返回数组时,该函数都无法工作,因为它的一个索引具有非utf字符,其中大多数是巴西葡萄牙语单词的重音。