Bug Tracker

Ticket #1080 (closed bug: fixed)

Opened 2 years ago

Last modified 3 months ago

$.get(url, callback) overwrites default 'data' parameter

Reported by: spinal007 Assigned to: john
Type: bug Priority: major
Milestone: 1.1.4 Component: ajax
Version: 1.1.3 Keywords: ajax data
Cc: Needs: Review

Description (last modified by john) (diff)

Please see the code and comments below for explanation...

   // Consider the following default settings
   $.ajaxSetup({
    data:{'var1':'A', 'var2':'B'}
   });
   $(document.body).click(function(){
    // TEST 1
    $.get('/test1/', function(r){ });
    //RESULT: GET http://localhost/test1/
    //WRONG: Missing var1=A&var2=B
    // TEST 2
    $.get('/test2/', null, function(r){ });
    //RESULT: GET http://localhost/test2/
    //WRONG: Missing var1=A&var2=B
    // TEST 3
    $.get('/test3/', {}, function(r){ });
    //RESULT: GET http://localhost/test3/?
    //WRONG: Missing var1=A&var2=B
    // TEST 4
    $.get('/test4/', {'var3':'C'});
    //RESULT: GET http://localhost/test4/?var3=C
    //WRONG: Missing var1=A&var2=B
    // TEST 5
    $.get('/test5/');
    //RESULT: GET http://localhost/test5/
    //WRONG: Missing var1=A&var2=B
   });

Attachments

Change History

Changed 2 years ago by malsup

I'm not sure I agree with test 2, 3 and 4. Are you suggesting that the default data is *always* added to the request url? That's not how the other options work. For all the other options, values that are provided on the $.get call override those provided in ajaxSettings. We could achieve the same behavior using this as the first line in $.ajax:

if (s && s.data == window.undefined) s.data = jQuery.ajaxSettings.data;

and changing the line in $.get that sets data = null to

data = window.undefined;

Changed 1 year ago by john

  • owner set to john
  • priority changed from critical to major
  • version changed from 1.1.1 to 1.1.3
  • description changed from Please see the code and comments below for explanation... {{{ // Consider the following default settings $.ajaxSetup({ data:{'var1':'A', 'var2':'B'} }); $(document.body).click(function(){ // TEST 1 $.get('/test1/', function(r){ }); //RESULT: GET http://localhost/test1/ //WRONG: Missing var1=A&var2=B // TEST 2 $.get('/test2/', null, function(r){ }); //RESULT: GET http://localhost/test2/ //WRONG: Missing var1=A&var2=B // TEST 3 $.get('/test3/', {}, function(r){ }); //RESULT: GET http://localhost/test3/? //WRONG: Missing var1=A&var2=B // TEST 4 $.get('/test4/', {'var3':'C'}); //RESULT: GET http://localhost/test4/?var3=C //WRONG: Missing var1=A&var2=B // TEST 5 $.get('/test5/'); //RESULT: GET http://localhost/test5/ //WRONG: Missing var1=A&var2=B }); }}} to Please see the code and comments below for explanation... {{{ // Consider the following default settings $.ajaxSetup({ data:{'var1':'A', 'var2':'B'} }); $(document.body).click(function(){ // TEST 1 $.get('/test1/', function(r){ }); //RESULT: GET http://localhost/test1/ //WRONG: Missing var1=A&var2=B // TEST 2 $.get('/test2/', null, function(r){ }); //RESULT: GET http://localhost/test2/ //WRONG: Missing var1=A&var2=B // TEST 3 $.get('/test3/', {}, function(r){ }); //RESULT: GET http://localhost/test3/? //WRONG: Missing var1=A&var2=B // TEST 4 $.get('/test4/', {'var3':'C'}); //RESULT: GET http://localhost/test4/?var3=C //WRONG: Missing var1=A&var2=B // TEST 5 $.get('/test5/'); //RESULT: GET http://localhost/test5/ //WRONG: Missing var1=A&var2=B }); }}}
  • milestone changed from 1.2 to 1.1.4

Changed 1 year ago by john

  • status changed from new to closed
  • resolution set to fixed

Fixed in SVN rev [2783].

Note: See TracTickets for help on using tickets.