I’m trying to use jQuery to write all my js unobtrusively, and running
into a bit of a problem when triggering the format.js block in IE6 (and
possibly IE7). It returns the JSON string no problem, but instead of
parsing it, IE6 asks to download the resource as a .js file.
So if my url is ‘/pictures/1.js’, IE6 will ask to save or run ‘1.js’
I did do some digging, and I understand that IE sets / on the Accept
header. I’m not sure if it has to do with that or not. It is triggering
the format I’m asking for. It’s just that IE6 won’t recognize it as a
typical javascript response.
Here’s some code. Also note that this is for an image upload, so it’s
not a real AJAX request, and I’m using the jQuery Form plugin to post to
an iframe.
The details of my ajax call:
var options = {
url: /pictures/1.js,
iframe: true,
beforeSubmit: prepImageArea,
success: imageUploaded,
dataType: ‘script’,
beforeSend: function(xhr) {xhr.setRequestHeader(“Accept”,
“text/javascript”)}
}
And my respond_to block:
respond_to do |format|
format.html { redirect_to edit_picture_path(@picture) }
format.js { render :json => @picture.to_json(:methods =>
[:public_filename, :large_thumb]) }
end
Any suggestions? Thanks.