0

私は jQuery/Ajax の分野では初めてで、小さなテスト関数が機能しません。そして、私のページも更新されています

<script type="text/javascript" >
$(document).ready(function() {
    $("#ser_itm").change(function() {
        var id=$(this).val();
        var dataString = 'id='+ id;
        alert(dataString);
        $.ajax({
            type: "POST",
            url: "bar_pull.php",
            data: dataString,
            cache: false,
            success: function(html) {
                $("#tbl").html(html);
            } 
        });
    });
});

4

4 に答える 4

3

関数呼び出しの結果ではなく、関数を渡します。

$('.linkDetails').on('click', getDetailsFromServer);

同じことを AJAX 成功コールバックに適用します。

success: postToPage

また、getDetailsFromServer()イベントにバインドする前に関数を定義する必要があります。呼び出しの前に関数宣言を移動します.on('click', ...)

于 2013-09-27T09:49:14.777 に答える
2

アルン・P・ジョニーの言ったことは正しい!しかし、あなたのコードには別の問題があります

$('.linkDetails').on('click', getDetailsFromServer);

上で試してください

于 2013-09-27T09:43:35.700 に答える
2

そこで、これらの点をより明確に説明しようと思います。


にアクセスできませんC:\Users\yah\Desktop\text.txt。これはサーバー側のパスです。JavaScript はクライアント側で実行されます。したがって、これはブラウザで参照できるパスである必要があります/pathinURL/text.txt。これを行う方法は、ホスティング技術などに依存します。


あなたのコールバックも間違っています、

$('.linkDetails').on('click', getDetailsFromServer());

&

success: postToPage()

これらは、イベントが発生したときではなく、ヒットしたときに関数を実行します(実際には関数の結果をバインドします)。これらを機能させるには、中括弧を削除する必要があります。

$('.linkDetails').on('click', getDetailsFromServer);

&

success: postToPage

これにより、実際の関数が関数ポインターとしてフックされるため、実際の関数は必要なときに起動されます。

最終的なコードは次のようになります。

$('.linkDetails').on('click', getDetailsFromServer);

function getDetailsFromServer() {

   $.ajax({
       type: 'GET',
       url: '/someURL/text.txt',
       success: postToPage
   });
}

function postToPage(data) {

   $('.textDetails').text(data);
   console.log(data);
}
于 2013-09-27T09:50:20.840 に答える