0

下面是我对控制器进行的 jquery ajax 调用

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;
    }

我的问题是即使我die在 loadColors() 中使用过,正在执行成功和完整的功能。我想要的是一个函数,如果我们从 loadColors() 返回一些东西就会运行?我怎样才能完成它?

4

4 回答 4

2

这样做时.success()是不必要的,$.post因为function(results)只有在帖子返回成功时才会调用。

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

是你想玩的。

于 2012-11-08T08:17:50.393 回答
1

如果您想error在客户端代码中触发处理程序,您应该让您的查询返回一个错误代码(404 Page not found500 Internal server error等...)。

在服务器端使用 php,您可以使用以下header功能:

function loadColors()
{
    header('HTTP/1.1 500 Internal Server Error');
    die;
}
于 2012-11-08T08:41:43.667 回答
1

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

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

例如。

如果你真的不想让成功函数通过 PHP 脚本运行,你应该检查其他头文件,以便在你死之前回馈。我不完全确定这是否有效,因为我以前没有使用过它,但是您可以发送标头来说明页面上有错误。

于 2012-11-08T08:18:40.493 回答
1

函数success和complete被调用是因为你的调用没有出错。你什么都不返回。如果调用它自己的东西出错(即超时或状态码!= 200),则会调用错误函数。

您必须检查成功功能。

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

    // do the right stuff

})
于 2012-11-08T08:19:24.470 回答