2011-08-13 9 views
0

POSTを使用してmySQLからデータを取得するページがあります。しかし、それは私が下にスクロールしてPOSTを行う何かをクリックすると、ページを一番上に戻ってきてしまうからです。誰もがこれを修正できるいくつかのjavascript/jqueryプラグインを知っていますか?POSTでスクロールを無効にする

答えて

1

あなたはJumping Inside Pagesを試しましたか?

と別の例How To Link to a Specific Spot on a Page

<div id="whatever-you-want-to-call-it"> 
    The content of your div here. 
</div> 

とまあ、その点に

http://www.pagename.html#whatever-you-want-to-call-it 
+0

はそれを行うための動的な方法のより多くのを探していた...そう、私はそれがサーバーから引っ張られています持っているすべての単一のリスト項目の中にこれを実装する必要があると思います。.. – Zakman411

+2

@ Zakman411:リストをレンダリングするときにも、これらのアンカーを動的に作成します。 – hakre

3

を取得するためのURL、あなたはAJAX POSTを行うと、AJAXに起因するもので、ページの内容を交換する場合POSTでは、このスクロール効果は問題にはなりません。

この操作は、ユーザーにシームレスに表示されることがあります(ブラウザが読み込まれていないこと)。

のは、フォームがあるとしましょう:

<form id="some_form" action="myphp.php"> 
    <input name="something" value="foo"/> 
    <input name="something_else" value="bar" /> 
</form> 

とjQuery:

$("#some_form").submit(function() { 
    var url = $(this).attr("action"); 
    var form_data = $(this).serialize(); 
    // post the same data via an AJAX call 
    $.post(url, form_data, function(data) { 
     // replace the contents from the received response 
     $("html").html(data); 
    }); 
    // disable the default form submit behavior 
    return false; 
}); 
+1

javascriptを有効にしている場合のみ有効です。 – hakre

+0

それは本当です、hakre。 –

+0

@uku:どうすればいいですか? – Zakman411

0

それはe.preventDefaultを使用することがより明らかだが(); jQuery(Uku Loskitのように提案されています)。 彼のコードに間違いがあります(動作しません)ので、私はそれを修正しました。ここで

が変更と彼のコードです:

<form id="some_form" action="myphp.php""> 
    <input name="something" value="foo"/> 
    <input name="something_else" value="bar" /> 
</form> 

とjQuery:

$("#some_form").submit(function(e) { // e = event object, it has many usefull properties and methods 
    e.preventDefault(); 
    var url = $(this).attr("action"); 
    var form_data = $(this).serialize(); 
    // post the same data via an AJAX call 
    $.post(url, form_data, function(data) { 
     // replace the contents from the received response 
     $(document).html(data); 
    }); 
}); 

ところで、あなたはに滞在したい場合はjavascriptをせずにそれを達成するためにどのように方法はありません同じページ(リロードせず、URLを変更しないでください)。もしそれがページネーションのように使われていれば、urlの後に#some-idを追加して、ページが読み込まれるときに上部にあるべきアイテムに 'some-id'というIDを追加することができます。これはうまくいくでしょう - jsは必要ありません。

0

scrollTopを使用してみてください:

$("#some_form").submit(function() { 
    var url = $(this).attr("action"); 
    var form_data = $(this).serialize(); 
    var currentScrollTop = $('body').scrollTop(); 

    // post the data via an AJAX call 
    $.post(url, form_data, function(data) { 
     // replace the contents from the received response 
     $(document).html(data); 
     $('body').scrollTop(currentScrollTop); 
    }); 

    // disable the default form submit behavior 
    return false; 
}); 
関連する問題