如何根据成功处理程序中的返回值隐藏按钮?

时间:2012-04-23 12:05:13

标签: jquery ajax

我是Jquery的新手。我有这样的代码:

$.ajax({
    url: "${createLink(controller :"
    tasks ", action :"
    holidayStatus ")}",

    data: "userName=" + $("#user").find('option:selected').text() + "&date1=" + $("#datePicker").val() + "&date2=" + $("#datePicker2").val(),
    cache: false,
    success: function(html) {
        $(".errors").append(html);
        $(".errors").delay(1000).fadeIn('slow');
        $("#createButton").delay(1000).fadeOut('slow');
    })​

这可以按预期工作。在我的success处理程序中,我将html(我从服务器端获得)附加到.errors类。与此同时,我隐藏了标识为createButton的按钮。

但我想要的是一种查找html处理程序中的success是否包含任何数据的方法(html可能没有任何内容在其中)。如果是这样,我需要禁用createButton id,否则我不应该做任何事情。

如何处理?

4 个答案:

答案 0 :(得分:3)

if ($(html).contents().length) // there is content in html

Live DEMO

答案 1 :(得分:1)

假设html是一个字符串,您只需检查html.legth > 0

success: function(html) {
    if (html.length > 0) {
        $(".errors").append(html);
        $(".errors").delay(1000).fadeIn('slow');
        $("#createButton").delay(1000).fadeOut('slow');
    }
})

答案 2 :(得分:0)

你可以写:

$.ajax({
  url: "${createLink(controller :"tasks", action :"holidayStatus")}",
  data: "userName=" + $("#user").find('option:selected').text() + "&date1=" 
                    + $("#datePicker").val() + "&date2=" 
                    + $("#datePicker2").val(),
  cache: false,
  success: function(html) {
           if(html)
           {
               $(".errors").append(html);
               $(".errors").delay(1000).fadeIn('slow');
               $("#createButton").delay(1000).fadeOut('slow');
               $("#createButton").removeAttr('disabled'); //remove disabled
           }else{
               $("#createButton").attr('disabled','disabled'); //disable button                   
           }                     
})

问候。

答案 3 :(得分:0)

<强> dataTypeString 默认值:智能猜测(xml,json,脚本或html) 您期望从服务器返回的数据类型。如果没有指定,jQuery将尝试根据响应的MIME类型推断它。

“html”:以纯文字格式返回HTML;包含的脚本标记在插入DOM时会被评估。

//"html" is a string, so simple take it length
if(html.length > 0) {
  $(".errors").append(html);
  $(".errors").delay(1000).fadeIn('slow');
  $("#createButton").delay(1000).fadeOut('slow');  
}