Javascript ajax承诺数据未定义

Javascript ajax承诺数据未定义,javascript,php,jquery,ajax,promise,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: {

这件事让我有点头晕目眩。我有这样一个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。实际上,当我查看调试工具的网络选项卡时,响应为true

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

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


正在另一个ajax调用的.then部分调用此函数。请在ajax请求结束时承诺:

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

这个问题现在已经解决了,下面是我如何解决它的

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


希望我能在这些信息上帮助别人。

在ajax调用结束时松开.promise()。代码在中工作,无论是否调用promise();。要继续使用由
promise.then()
返回的数据,您需要从
genericname()
-->-返回
promise.then(…)
或者更明智的做法是,只需将
承诺和链
返回到
genericname
,而这似乎无法解决问题。不过,我会在这个问题上补充一些我不喜欢的重要内容