File not downloading with BLOB object in iphone chrome browser
there are some issue on iOS's Chrome. In my case using FileReader()
solved the problem:
var reader = new FileReader();var out = new Blob([this.response], {type: 'application/pdf'});reader.onload = function(e){ window.location.href = reader.result;}reader.readAsDataURL(out);
Combining with Mose Answer's above ,you can detect the os type and set your code accordingly to download
function hello(id) { //alert(id); //alert(id); var ln = "en"; $.ajax({ type: "post", url: "ajaxurl", data: { lang: ln, num_srno: id }, success: function(data) { //alert(data); /* var bytes = new Uint8Array(data); // pass your byte response to this constructor var blob=new Blob([bytes], {type: "application/pdf"});// change resultByte to bytes var link=document.createElement('a'); link.href=window.URL.createObjectURL(blob); link.download="myFileName.pdf"; link.click();*/ var sampleArr = base64ToArrayBuffer(data); saveByteArray("Sample Report", sampleArr); } });}function base64ToArrayBuffer(base64) { var binaryString = window.atob(base64); var binaryLen = binaryString.length; var bytes = new Uint8Array(binaryLen); for (var i = 0; i < binaryLen; i++) { var ascii = binaryString.charCodeAt(i); bytes[i] = ascii; } return bytes;}function getMobileOperatingSystem() { var userAgent = navigator.userAgent || navigator.vendor || window.opera; // Windows Phone must come first because its UA also contains "Android" if (/windows phone/i.test(userAgent)) { return "Windows Phone"; } if (/android/i.test(userAgent)) { return "Android"; } // iOS detection from: http://stackoverflow.com/a/9039885/177710 if (/iPad|iPhone|iPod/.test(userAgent) && !window.MSStream) { return "iOS"; } return "unknown";}
I hope it helps.