Javascript ajax承诺数据未定义
这件事让我有点头晕目眩。我有这样一个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: {
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
,而这似乎无法解决问题。不过,我会在这个问题上补充一些我不喜欢的重要内容