首页 > 解决方案 > ajax 承诺数据未定义

问题描述

我对此有些头疼。我有一个这样的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 进程是真的。实际上,当我查看调试工具的网络选项卡时,响应显示为 true。

谁能解释这里的错误是什么?

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

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

标签: javascriptphpjqueryajaxpromise

解决方案


在 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'
})

推荐阅读