阿贾克斯成功函数

2022-08-30 22:05:13

我正在使用Ajax帖子将表单数据提交给服务器,进行验证,然后根据数据是否有效以及是否可以存储返回消息。不过,我在ajax帖子中的成功函数没有运行。以下是ajax帖子和成功消息的显示:

jQuery.ajax({           
    type:"post",
    dataType:"json",
    url: myAjax.ajaxurl,
    data: {action: 'submit_data', info: info},
    success: function(data) {
        successmessage = 'Data was succesfully captured';
    }
});

$("label#successmessage").text(successmessage);
$(":input").val('');
return false;

但是,标签上不会显示任何消息。我尝试将成功消息变量设置为代码中的设置值,它显示正常,所以我的成功函数一定有问题,我只是看不到什么?我还尝试像这样设置错误回调:

error: function(data) {             
    successmessage = 'Error';
},

但仍然不显示任何消息。


答案 1

这是因为Ajax是异步的,或者该函数将在以后服务器应答客户端时调用。因此,只需根据结果将零件移动到您的成功函数中,如下所示:successerror

jQuery.ajax({

            type:"post",
            dataType:"json",
            url: myAjax.ajaxurl,
            data: {action: 'submit_data', info: info},
            success: function(data) {
                successmessage = 'Data was succesfully captured';
                $("label#successmessage").text(successmessage);
            },
            error: function(data) {
                successmessage = 'Error';
                $("label#successmessage").text(successmessage);
            },
        });

        $(":input").val('');
        return false;

答案 2

上面给出的答案不能解决我的问题。因此,我将异步更改为 false 以获取警报消息。

jQuery.ajax({
            type:"post",
            dataType:"json",
            async: false,
            url: myAjax.ajaxurl,
            data: {action: 'submit_data', info: info},
            success: function(data) {
                alert("Data was succesfully captured");
            },
        });