阿贾克斯诺言数据未定义

时间:2018-06-27 17:27:26

标签: javascript php jquery ajax promise

对此我有些不高兴。我有一个像这样的ajax呼叫:

function genericname()
{
    var domain = $('#input').val();
    var sendData = {
        'domain': domain
    };

    var promise = $.ajax(
    {
        type: 'POST',
        url: '/functions.php',
        data:
        {
            module: 'modulename',
            operation: 'functionname',
            parameters: sendData
        },
        dataType: 'json'
    }).promise();

    promise.then(function(data)
    {
        console.log(data);
        return data;
    });

    promise.fail(function(data)
    {
        console.log(data);
    });
}

现在的问题是,在调试时我注意到promise.then和promise.fail都被跳过了。我要输出的php处理是正确的。实际上,当我在调试工具的“网络”标签中查看时,响应说的是真的。

有人可以解释这里的错误吗?

编辑:php函数输出的结果是json_encoded

此函数在另一个ajax调用的.then部分中被调用

2 个答案:

答案 0 :(得分:1)

在ajax请求结束时删除.promise:

var domain = $('#input').val();
var sendData = {
    'domain': domain
};

var promise = $.ajax(
{
    type: 'POST',
    url: '/functions.php',
    data:
    {
        module: 'modulename',
        operation: 'functionname',
        parameters: sendData
    },
    dataType: 'json'
})

答案 1 :(得分:0)

该问题现已解决,这是我解决的方法。

该函数需要返回一个布尔值,该布尔值用于另一个ajax调用的另一个.then语句的if语句中,以更改某些html。 最后,如果使用此功能,我将在.then部分放置html更改。

希望我可以帮助某人此信息。