1

一意のIDを持つ動的なCSSボタンを生成しており、次のクリックハンドラーを使用してクリックイベントをキャプチャしています

$(document.body).on('click', 'a', function() {
    if (typeof(this.id) != "undefined") { //check if id exists
        var n = this.id.split("%");
        if (n[0] == "jsonpbtn") { //check if one of our buttons    
            var surl = "http://www.blah.com/tree/jsonp/foo/" + n[1];
            $.ajax({
                url: surl,
                cache: false,
                dataType: "jsonp",
                jsonp: false,
                jsonpCallback: 'foo',
                error: function(XHR, textStatus, errorThrown) {
                    alert(textStatus + ":" + errorThrown)
                },
                success: function(foo) {
                    $('#blah' + foo.id).html(foo.message);
                }
            });
        }
    }
});​

ajax呼び出しは機能しますが、ページは「parsererror:Error:fooが呼び出されませんでした」というエラーを生成します。問題は、これがページ上のすべての「a」要素をループし、各「jsonpbtn」の関数を呼び出すことだと思いますか?

4

1 に答える 1

0

ボタンのステータスを変更するajax呼び出しの前に予備ステージを挿入することで、問題が解決することがわかりました。

$(document.body).on('click', 'a', function() {
if (typeof(this.id) != "undefined") { //check if id exists
    var n = this.id.split("%");
    if (n[0] == "jsonpbtn") { //check if one of our buttons    
        var surl = "http://www.blah.com/tree/jsonp/foo/" + n[1];
        $('#div_id'+n[1]).html('<a class="button" href="#">working</a>');//<-added this
        $.ajax({
            url: surl,
            cache: false,
            dataType: "jsonp",
            jsonp: false,
            jsonpCallback: 'foo',
            error: function(XHR, textStatus, errorThrown) {
                alert(textStatus + ":" + errorThrown)
            },
            success: function(foo) {
                $('#blah' + foo.id).html(foo.message);
            }
        });
    }
}
});​

助けてくれた人たちに感謝します。よろしくマーティン

于 2012-10-18T07:22:16.297 に答える