Bug Tracker

Ticket #4206: jquery-callbackname.diff

File jquery-callbackname.diff, 1.7 KB (added by ion, 11 years ago)
  • src/ajax.js

    diff --git a/src/ajax.js b/src/ajax.js
    index 0f5f805..e5526ee 100644
    a b jQuery.extend({ 
    195195
    196196                // Build temporary JSONP function
    197197                if ( s.dataType == "json" && (s.data && s.data.match(jsre) || s.url.match(jsre)) ) {
    198                         jsonp = "jsonp" + jsc++;
     198                        if ( typeof s.callbackName === "string" ) {
     199                                // callbackName is used to request the given content with a constant URL.
     200                                // This enables both the browser and the server to cache the data.
     201                                // s.cache = false would negate the effect.
     202                                s.cache = true;
     203
     204                                jsonp = "jsonp" + s.callbackName;
     205                                if ( window[ jsonp ] )
     206                                        throw "callbackName " + s.callbackName + " not unique";
     207                        } else
     208                                jsonp = "jsonp" + jsc++;
    199209
    200210                        // Replace the =? sequence both in the query string and the data
    201211                        if ( s.data )
  • test/unit/ajax.js

    diff --git a/test/unit/ajax.js b/test/unit/ajax.js
    index 0d2f071..81ae0b5 100644
    a b test("jQuery.getScript(String, Function) - no callback", function() { 
    442442});
    443443
    444444test("jQuery.ajax() - JSONP, Local", function() {
    445         expect(7);
     445        expect(8);
    446446
    447447        var count = 0;
    448         function plus(){ if ( ++count == 7 ) start(); }
     448        function plus(){ if ( ++count == 8 ) start(); }
    449449
    450450        stop();
    451451
    test("jQuery.ajax() - JSONP, Local", function() { 
    504504        });
    505505
    506506        jQuery.ajax({
     507                url: "data/jsonp.php",
     508                dataType: "jsonp",
     509                callbackName: "Test",
     510                success: function(data){
     511                        ok( data.data, "JSON results returned (GET, specified callbackName)" );
     512                        plus();
     513                },
     514                error: function(data){
     515                        ok( false, "Ajax error JSON (GET, specified callbackName)" );
     516                        plus();
     517                }
     518        });
     519
     520        jQuery.ajax({
    507521                type: "POST",
    508522                url: "data/jsonp.php",
    509523                dataType: "jsonp",