Bug Tracker

Modify

Ticket #8298 (closed bug: invalid)

Opened 3 years ago

Last modified 2 years ago

jQuery version 1.5 - ajax - <script> tag timestamp problem

Reported by: norberttamas Owned by:
Priority: low Milestone: 1.next
Component: manipulation Version: 1.5
Keywords: Cc:
Blocking: Blocked by:

Description (last modified by jitter) (diff)

See description here:  http://stackoverflow.com/questions/5022557/jquery-version-1-5-ajax-script-tag-timestamp-problem


[copied from link]
If I load some content with ajax (jQuery) which has a script tag in it, jQuery 1.5 adds the timestamp to the script tag src url. See example bellow.
Example: content what I load with ajax:

<div>text1</div>
<script type="text/javascript" src="/js/abc-xyz.js?r=1.1"></script>

This is the src url from where it loads the script code after I insert the previous content to the page:

.../js/abc-xyz.js?r=1.1&_=1297892228466

Does anybody knows why this happening?
It happens only with jQuery 1.5. It doesn't happen with jQuery 1.4.4.
\ Code Example:

$.ajax({
    url: content.html,
    type: 'GET',
    data: someDataObject,
    success: function(data) {
        // some code here
    },
    error: function(data) {
        // some code here
    }
});

Thanks.

Change History

comment:1 Changed 3 years ago by jitter

  • Priority changed from undecided to low
  • Resolution set to invalid
  • Status changed from new to closed
  • Component changed from unfiled to manipulation
  • Description modified (diff)

Thanks for taking the time to contribute to the jQuery project by writing a bug report. The next time also please include the actual report and a test case on  http://jsfiddle.net instead of only linking to an external site.

After checking your report and your code samples I come to the conclusion that this isn't a bug. I also made this  test case

jQuery 1.4+ (until 1.5) had a bug which caused the cache option not to default to false for script requests. This bug (see #7578) has been fixed in 1.5 .

Now what you might know or not know is, that jQuery does special-handle script tags when doing DOM manipulations. It filters them out and requests them via ajax. This explains why even a "normal" inline script tag suddenly is requested with additional url parameters.

There are ways to work around this if it has unwanted side effects for you.

  • use $.ajaxSetup({ cache: true }) when appropriate
  • use a  prefilter for script requests and e.g. check for urls where you don't want the random parameter to be added and set cache: true in the prefilter for those
  • in e.g. the success call back handle the script tags yourself by doing something along these lines
    var elems = $(htmlwithscripttags);
    elems.filter("script") //now do whatever with the scripts
    elems.filter(":not(script)").appendTo("body"); //e.g.
    
Last edited 3 years ago by jitter (previous) (diff)

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.