jquery - एक फ़ाइल डाउनलोड करें और इसे AJAX के माध्यम से किसी अन्य पृष्ठ पर रीडायरेक्ट करें




codeigniter wiki (8)

1) अजाक्स एक समाधान नहीं है।

2) window.open() पॉपअप को अधिकांश ब्राउज़रों में भी उसी डोमेन से अवरुद्ध कर दिया जाएगा (कम से कम कुछ समय पहले क्रोम और एफएफ में हो रहा था, जब मैंने कुछ इसी तरह कार्यान्वित करने की कोशिश की थी)

ऐसा कुछ काम करेगा: (यह कोड लौटाए गए सामान की जांच नहीं करता है, इसलिए 404 या गैर-फ़ाइल आउटपुट डाउनलोड किए बिना रीडायरेक्ट का कारण बनता है)

document.getElementById('zzz').onclick = function() {
  ifrm = document.createElement('iframe');
  ifrm.style.display = "none";

  ifrm.src = "https://github.com/SheetJS/test_files/blob/b07031a7bd5a8b86b9baac94267f20cf81c6d5eb/A4X_2013.xls?raw=true"; 
// some random xls file from github (it contains just a single "x" character in cell A-4)
  
  ifrm.onload = function() {
    window.location.href = "https://jquery.com";
  };
  
  document.body.appendChild(ifrm);
  return false;
}
<a href="#" id="zzz">
click me
</a>

पीएस: आप अंतर्निहित दर्शकों का उपयोग करने के बजाय ब्राउज़र को फ़ाइल डाउनलोड करने के लिए मजबूर करने के लिए कुछ फ़ाइल प्रकारों (जैसे पीडीएफ) के लिए application/octet-stream Content-type शीर्षलेख चाहते हैं।

एक्सेल फ़ाइल डाउनलोड करने के लिए मेरे पास एक साधारण संपर्क फ़ॉर्म है। मुख्य मुद्दा होता है, जब AJAX लोड होता है। मैं एक्सेल फ़ाइल डाउनलोड करना चाहता हूं, फिर उपयोगकर्ता को अगले पृष्ठ पर रीडायरेक्ट करें .. नीचे मेरा कोड डमी डेटा के साथ है ..

अजाक्स कोड ..

$.ajax({
    type: "POST",
    url: "/site/ajaxexcel.php", 
    data: {'value':'send'},
    cache: false,
    success: function(html){
        location.href = '<?php echo base_url()."/site/welcome.php" ?>';                 
    }
});

और मेरा ajaxexcel.php कोड है:

<?php 
$content= '<html xmlns:x="urn:schemas-microsoft-com:office:excel">
<head>
    <!--[if gte mso 9]>
    <xml>
        <x:ExcelWorkbook>
            <x:ExcelWorksheets>
                <x:ExcelWorksheet>
                    <x:Name>Sheet 1</x:Name>
                    <x:WorksheetOptions>
                        <x:Print>
                            <x:ValidPrinterInfo/>
                        </x:Print>
                    </x:WorksheetOptions>
                </x:ExcelWorksheet>
            </x:ExcelWorksheets>
        </x:ExcelWorkbook>
    </xml>
    <![endif]-->
</head>

<body><table class="table table-condensed table-striped table-hover table-bordered pull-left" id="myTable"><thead><tr><th>Rakesh</th><th>kumar</th></tr></thead><tbody><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr><tr><th>Rakesh</th><th>Rakesh</th></tr></tbody></table></body></html>';
header('Content-type: application/excel');
header('Content-type: image/jpeg,image/gif,image/png');
header("Content-Disposition: attachment; filename=download.xls");
header("Pragma: ");
header("Cache-Control: ");
echo $content;
?>

मैं सिर्फ एक्सेल फ़ाइल डाउनलोड करना चाहता हूं और फिर उपयोगकर्ता को किसी विशिष्ट स्थान पर रीडायरेक्ट करना चाहता हूं।

अगर आप इसे सही तरीके से कर चुके हैं तो आप अपने कोडिनेटर कोड के साथ मेरी मदद कर सकते हैं ..


अजाक्स में .... बस आप सर्वर पर एक्सेल फ़ाइल बना सकते हैं ... AJAX प्रतिक्रिया एक्सेल फ़ाइल का मार्ग होगा ... AJAX सफलता पर एक्सेल फ़ाइल को नए टैब में खोलें (यह स्वचालित रूप से एक्सेल डाउनलोड करता है) और नए स्थान के साथ एक ही समय में नया टैब खोलें।

नीचे दिए गए AJAX सफलता के अंदर नमूना कोड

  window.open("path to excel..");
    window.open("new location");

भी उपयोग कर सकते हैं (यदि आवश्यक हो)

window.location.replace("new location");

नए टैब के रूप में क्रोम में कई लिंक खोलें


आप अजाक्स अनुरोध का उपयोग कर फ़ाइल डाउनलोड नहीं कर सकते हैं। कोई भी आपको विशेष स्थान पर रीडायरेक्ट करना है जो आपको फ़ाइल डाउनलोड करने की अनुमति देगा। हो सकता है कि आपने इसके साथ प्रयास किया हो, लेकिन अलग-अलग टैब में फ़ाइल डाउनलोड करने का प्रयास करें और अपने पृष्ठ को विशेष पृष्ठ पर रीडायरेक्ट करें।

<input id="btnGetResponse" type="button" value="Redirect" />
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<script type="text/javascript">
$(function () {
    $("#btnGetResponse").click(function () {
        window.open('/test/excel.php');
        window.location = "http://.com/";
    });
});
</script>

आपकी PHP फ़ाइल (excel.php) से भी इस लाइन को हटा दें। अन्यथा यह आपकी फ़ाइल जेपीजी या पीएनजी के रूप में डाउनलोड करेगा

header('Content-type: image/jpeg,image/gif,image/png');


नीचे विधि का प्रयास करें, उम्मीद है कि यह काम करेगा

  1. window.open माध्यम से नई विंडो में ajaxexcel.php खोलें
  2. यह डाउनलोड करना शुरू हो जाएगा, फिर इसे बंद करें।
  3. जैसे ही यह बंद हो जाता है, पृष्ठ को रीडायरेक्ट करें।

बस सरल जावास्क्रिप्ट के साथ प्रयोग करें

window.location.replace(###file url###);

https://github.com/johnculviner/jquery.fileDownload का उपयोग करके

आपकी PHP फ़ाइल (excel.php) से भी इस लाइन को हटा दें। अन्यथा यह आपकी फ़ाइल जेपीजी या पीएनजी के रूप में डाउनलोड करेगा

हेडर ('सामग्री-प्रकार: छवि / जेपीजी, छवि / gif, छवि / पीएनजी');


https://github.com/johnculviner/jquery.fileDownload जेएस का उपयोग करके:

$.ajax({
    type: "POST",
    url: "/site/ajaxexcel.php", 
    data: {'value':'send'},
    cache: false,
    success: function(html)
        {
            $.fileDownload("ajaxheader.php",
            {
                successCallback: function (url) {
                    location.href = '<?php echo base_url()."/site/welcome.php" ?>';    
                },
                failCallback: function (responseHtml, url) {
                    alert('error');
                }
            });       
        }
});

और php पक्ष पर शीर्षलेख में नीचे पंक्ति जोड़ें:

header("Set-Cookie: fileDownload=true; path=/");




wiki