Javascript jQuery Ajax问题-仅当结果返回时执行的函数

Javascript jQuery Ajax问题-仅当结果返回时执行的函数,javascript,ajax,jquery,Javascript,Ajax,Jquery,下面是我对控制器的jqueryajax调用 jQuery.post('index.php',{ 'option' : 'com_test', 'controller': 'product', 'task' : 'loadColors', 'format' : 'raw', 'design_id

下面是我对控制器的jqueryajax调用

jQuery.post('index.php',{
                'option'    : 'com_test',
                'controller': 'product',
                'task'      : 'loadColors',
                'format'    : 'raw',            
                'design_id' : design_id,
                    'collar_id' : collar_id                        
        },function(result){            
        }).success(function(result) { 
                alert(result); 
            }).error(function() { 
                jQuery('div#color_wrapper h1').text('ERROR WHILE LOADING COLORS');
            }).complete(function(result) { 
                alert(result); 
            });
在我的控制器中有如下功能

function loadColors()
    {
        die;
    }
我的问题是,即使我在loadColors()中使用了
die
,也会执行success和complete函数。我想要的是一个函数,如果我们从loadColors()返回一些东西,它就会运行?如何完成此操作?

在执行
$时,不需要
.success()
。post
,因为只有在post返回成功时才会调用
函数(结果)

jQuery.post('index.php',{
               'option'    : 'com_test',
               'controller': 'product',
               'task'      : 'loadColors',
              'format'    : 'raw',            
               'design_id' : design_id,
                  'collar_id' : collar_id                        
       },function(result){            

          alert(result);
       });
是您想要玩的。

执行
$时不需要
.success()
。post
因为只有在post返回成功时才会调用
函数(结果)

jQuery.post('index.php',{
               'option'    : 'com_test',
               'controller': 'product',
               'task'      : 'loadColors',
              'format'    : 'raw',            
               'design_id' : design_id,
                  'collar_id' : collar_id                        
       },function(result){            

          alert(result);
       });

是你想玩的东西。

我个人只需检查回调是什么,然后决定你想做什么

.success(function(result) { 
    if (result == "") {
        alert("empty result!");
    } else {
        alert("non empty result! " + result);
    }
})
比如说


如果您真的不想让success函数通过PHP脚本运行,那么您应该在死前检查其他头以返回。我不完全确定这是否有效,因为我以前没有使用过它,但您可以发送标题,告诉我页面上有错误

我个人只需检查回调是什么,然后决定您想要做什么

.success(function(result) { 
    if (result == "") {
        alert("empty result!");
    } else {
        alert("non empty result! " + result);
    }
})
比如说


如果您真的不想让success函数通过PHP脚本运行,那么您应该在死前检查其他头以返回。我不完全确定这是否有效,因为我以前没有使用过它,但您可以发送标题,告诉我页面上有错误

调用success和complete函数是因为您的调用没有出错。你什么也不退。如果调用函数本身出错(即超时或状态码!=200),则调用error函数

您必须在成功功能中进行检查

...
success(function (result) {
    if (!result) {
        alert('Error');
        return;
    }

    // do the right stuff

})

调用success和complete函数是因为您的调用没有出错。你什么也不退。如果调用函数本身出错(即超时或状态码!=200),则调用error函数

您必须在成功功能中进行检查

...
success(function (result) {
    if (!result) {
        alert('Error');
        return;
    }

    // do the right stuff

})

如果您想在客户端代码中触发
错误处理程序
,您的查询应该返回一个错误代码(
404页未找到
500内部服务器错误
,等等)

在服务器端使用php,您可以使用
标题
函数:

function loadColors()
{
    header('HTTP/1.1 500 Internal Server Error');
    die;
}

如果您想在客户端代码中触发
错误处理程序
,您的查询应该返回一个错误代码(
404页未找到
500内部服务器错误
,等等)

在服务器端使用php,您可以使用
标题
函数:

function loadColors()
{
    header('HTTP/1.1 500 Internal Server Error');
    die;
}

为什么当我在控制器中使用die时success()执行?为什么当我在控制器中使用die时success()执行?为什么当我在控制器中使用die时success()执行?为什么当我在控制器中使用die时success()执行?为什么success()执行当我在控制器中使用die时执行?因为请求完美地完成了,结果只是空的,但请求确实像它应该的那样工作。Ajax并不指望结果取决于它是否成功。如果您请求一个不存在的页面,则不会调用success函数。如果我们只从controller返回某个内容,那么将执行什么函数?好吧,就像我的示例一样,如果结果(即页面输出!)是否为空,我将签入result函数。如果它不是空的,你可以做你的逻辑,如果它是空的,你可以忽略它或给出一个错误。不客气。我不认为jQuery天生就有这种能力。有了这个yuo也可以更加灵活,例如,您可以让PHP回显错误代码,然后您可以在JavaScript中执行您想要的操作。如果(result==“error_username”){alert('username已经存在!');}或类似的内容。祝你好运为什么当我在控制器中使用die时success()会执行?因为请求完美地完成了,结果只是空的,但请求确实正常工作。Ajax并不指望结果取决于它是否成功。如果您请求一个不存在的页面,则不会调用success函数。如果我们只从controller返回某个内容,那么将执行什么函数?好吧,就像我的示例一样,如果结果(即页面输出!)是否为空,我将签入result函数。如果它不是空的,你可以做你的逻辑,如果它是空的,你可以忽略它或给出一个错误。不客气。我不认为jQuery天生就有这种能力。有了这个yuo也可以更加灵活,例如,您可以让PHP回显错误代码,然后您可以在JavaScript中执行您想要的操作。如果(result==“error_username”){alert('username已经存在!');}或类似的内容。祝你好运非常感谢你的支持非常感谢你的支持