Bug Tracker

Changes between Initial Version and Version 1 of Ticket #8298


Ignore:
Timestamp:
Feb 17, 2011, 6:52:00 AM (9 years ago)
Author:
jitter
Comment:

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.
    

Legend:

Unmodified
Added
Removed
Modified
  • Ticket #8298

    • Property Priority changed from undecided to low
    • Property Status changed from new to closed
    • Property Component changed from unfiled to manipulation
    • Property Resolution changed from to invalid
  • Ticket #8298 – Description

    initial v1  
    11See description here:
    22http://stackoverflow.com/questions/5022557/jquery-version-1-5-ajax-script-tag-timestamp-problem
     3
     4-----
     5[copied from link]\\
     6If 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.\\
     7Example: content what I load with ajax:
     8{{{
     9<div>text1</div>
     10<script type="text/javascript" src="/js/abc-xyz.js?r=1.1"></script>
     11}}}
     12This is the src url from where it loads the script code after I insert the previous content to the page:
     13{{{
     14.../js/abc-xyz.js?r=1.1&_=1297892228466
     15}}}
     16Does anybody knows why this happening?\\
     17It happens only with jQuery 1.5. It doesn't happen with jQuery 1.4.4.\\\
     18Code Example:
     19{{{
     20$.ajax({
     21    url: content.html,
     22    type: 'GET',
     23    data: someDataObject,
     24    success: function(data) {
     25        // some code here
     26    },
     27    error: function(data) {
     28        // some code here
     29    }
     30});
     31}}}
     32Thanks.