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が含まれていない可能性があります)。もしそうなら、私は何もすべきではない場合はIDを無効にする必要があります。createButton

それをどのように進めるのですか?

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 をプレーン テキストとして返します。含まれている script タグは、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 に答える