0

I have the need to present a list of files in a jquery mobile application (running on both desktops and mobile devices). Primarily from the desktop I need to download a file from the list. I have a simple href as follows:

<a href="download.php?file=test.txt">test.txt<a>

The problem is that when the user clicks on the link the actual contents of the file are displayed. I want the user to be able to save the file locally. I believe I am setting the header correctly. This is the Firebug dump of the headers:

Response Headers
Accept-Ranges   bytes
Cache-Control   public, must-revalidate, post-check=0, pre-check=0
Connection  Keep-Alive
Content-Disposition attachment; filename="test.txt"
Content-Length  95
Content-Type    application/octet-stream
Date    Mon, 25 Mar 2013 17:35:26 GMT
Expires -1
Keep-Alive  timeout=5, max=99
Pragma  public
Server  Apache/2.2.24 (Unix) mod_ssl/2.2.24 OpenSSL/1.0.0-fips
Request Headers
Accept  text/html, */*; q=0.01
Accept-Encoding gzip, deflate
Accept-Language en-US,en;q=0.5
Cookie  PHPSESSID=bbf2549f793aed8565b44d532a3088dc; path=%2F; fileDownload=true
Host    192.168.1.225
Referer http://192.168.1.225/
User-Agent  Mozilla/5.0 (Windows NT 6.1; WOW64; rv:19.0) Gecko/20100101 Firefox/19.0
X-Requested-With    XMLHttpRequest

I am testing from a browser on a Windows box.

What am I missing here?

mlewis54
  • 2,372
  • 6
  • 36
  • 58

2 Answers2

0

The answer is relatively simple. Jquery mobile makes all links an Ajax request (something I had forgotted). The solution is to add "rel="external" to the link to make it a non-ajax link as in:

<a href="download.php?file=test.txt" rel="external">test.txt<a>

Thanks to Alvaro G. Vicario for pointing me in the right direction.

mlewis54
  • 2,372
  • 6
  • 36
  • 58
0

you could also add this sceipt right before jQuet Mobile, it works for me.

<script>
 $(document).bind("mobileinit", function(){
     $.mobile.ajaxEnabled = false;
 }); 
</script>
mishxpie
  • 38
  • 8