2

我是 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类中。同时我用 id 隐藏按钮createButton

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

如何进行?

4

4 回答 4

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

现场演示

于 2012-04-23T12:07:31.410 回答
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');
    }
})
于 2012-04-23T12:10:26.020 回答
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                   
           }                     
})

问候。

于 2012-04-23T12:13:05.843 回答
0

dataTypeString 默认值:Intelligent Guess(xml、json、script 或 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');  
}
于 2012-04-23T12:15:18.370 回答