首页 > 解决方案 > ajax 响应数据始终未定义

问题描述

我试图通过 ajax 代码从数据库中获取数据。PHP 代码运行良好,但 ajax 响应始终未定义。我试过 json bat 结果是一样的。这里是代码:

    var email = $('#email').val();

    function getAjax(p, m) {
        $.ajax({
            url: '../lib/checkmail.php',
            type: 'post',
            data: {val : p, column : m},
            success: function (data) {
                return data.toString();
            }
        });
    }
    if (email.length > 0){

        alert(getAjax(email, 'youremail'));
    }

在此处输入图像描述

标签: phpjqueryajax

解决方案


ajax 调用异步工作。所以当你调用getAjax(p, m)if 时会开始获取 url,这需要时间,但函数会立即返回。只有在检索到 url 之后,success才会执行 ajax 调用的功能。所以你可以测试的是:

var email = $('#email').val();

function getAjax(p, m) {
    $.ajax({
        url: '../lib/checkmail.php',
        type: 'post',
        data: {val : p, column : m},
        success: function (data) {
            alert(data.toString());
        }
    });
}
if (email.length > 0){

    getAjax(email, 'youremail');
}

这应该会给你一个正确响应的警报。

另一个明显的问题是,您现在可能意识到,它getAjax(p, m)永远不会返回值。return属于success函数。因此,返回值getAjax(p, m)将始终为“未定义”。

您将必须学习如何使用事件驱动的异步编程语言。最好使用一本好书或课程。


推荐阅读