2012-02-21 3 views
0

私はhtmlページをフェッチし、フェードインアニメーションでそれを表示したい... しかしフェッチが機能せず、このためにも、アニメーション動的にHTMLページをフェッチし、それをアニメーション化 - jqueryの

$(document).ready(function() { 
var src; 

    $.ajax({ 
     url: "pages/sample.html", 
     success: function (data) { src=data }, 
     dataType: 'html' 
    }); 

    console.log(src); **// Throws undefined** 

    //To animate 
    $(function() { 
     $('html') 
      .hide() 
      .html(src) 
      .fadeIn(5000); 
    }); 
}); 
+1

代わりに 'load()'を使ってみてください。 – elclanrs

+0

関数にconsole.logを入れ、成功コールバックのparamとしてデータを呼び出す – vireshas

答えて

2

ajaxは、async操作です。これは今後返されることを意味します。

$.ajax({ 
    url: "pages/sample.html", 
    success: function (data) { 
       src=data ; 
       console.log(src); 
      }, 
    dataType: 'html' 
}); 
+0

ありがとうgdoron :)うまくいった! – user1184100

+0

@ user1184100 ** ajax **は "** Asynchronous ** JavaScript And XML"であることを覚えておいてください – gdoron

1

使用​​ようajax()何かの代わりに::より多くの情報訪問.load()

+0

彼はコールバック以外のデータを使用しています。それが彼の問題です。 – gdoron

+0

ありがとうございます。ありがとうございます。 – user1184100

+0

@gdoron :)ありがとうございました –

1

AJAX用

$('#result').load('pages/sample.html', function() { 
    //animation goes here 
}); 

が非同期である
は成功コールバック内の戻り値を使用するコードを入力してくださいこれは、結果をすぐに利用できるとは期待できないが、将来はある程度時間がかかることを期待することはできません。 jQueryは、コールバックを使用する機能を提供します。コールバックは、結果が利用可能になるとすぐに呼び出されます。あなたはあなたのコードを少し変更する必要が :.load()

$(function() { 

    $.ajax({ 
     url: "pages/sample.html", 
     success: function (data) { ajaxDataArrived(data); }, 
     dataType: 'html' 
    }); 

    function ajaxDataArrived (src) { 
     console.log(src); 
     $("html").hide().html(src).fadeIn(5000); 
    } 

}); 

のjQueryでのHTMLコンテンツの読み込みのための特定の機能があることに注意してください。 jQueryのは、あなたのためのコールバックを処理しますので、それは、上記のコード例よりもわずかに異なる動作します:

$("html").load("pages/sample.html"); 

これは、それがロードされるや否や、コンテンツを挿入自動的にロードします。 この関数のコールバックも提供できますが、コードが挿入されたの後にと呼ばれます。したがって、挿入する前にhtmlを隠したいので、これはあなたのケースではうまくいかないかもしれません。私は完全性のために追加したかっただけです。

+0

ありがとうapfelbox :) – user1184100

関連する問題