【问题标题】:ajax promise data undefinedajax 承诺数据未定义
【发布时间】:2018-12-06 16:22:45
【问题描述】:

我对此有些头疼。我有一个这样的 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 部分被调用

【问题讨论】:

  • 在 ajax 调用结束时松开 .promise()。 api.jquery.com/jquery.ajax
  • 代码在jsfiddle 中工作,无论是否调用promise();。要继续使用promise.then() 返回的数据,您需要从genericname() 返回该数据--> jsfiddle.net/yg20b8d7/3 - 返回promise.then(...); 或更明智,只需返回promise 并将then 链接到@ 987654330@

标签: javascript php jquery ajax promise


【解决方案1】:

这个问题现在已经解决了,我就是这样解决的。

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

希望我可以帮助有关此信息的人。

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 这似乎没有解决它。我会添加一些我忘记的重要问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-19
    • 2017-01-19
    • 2016-12-10
    • 2015-09-27
    • 1970-01-01
    相关资源
    最近更新 更多