2016-06-11 13 views
0

Ich bin versucht, Excel Form PHP durch Ajax Aufruf, wenn ich URL von bestimmten php laden gibt mir die Ausgabe, aber wenn das gleiche php über Ajax mit etwas Ajax Wert aufgerufen wird nichts auftaucht .. bin nicht sicher, wasAjax erhalten Excel-Formular PHP

ajax zu tun:

var fromdate= $("#fromdate").val(); 
var ToDate= $("#ToDate").val(); 
var Year= $('#Year').val(); 
var Category=$('#Category_1').val(); 

          $.ajax({ 
           url: "http://localhost/demo.php", 
           type: "post", 
           data: { 
            fromdate:fromdate,ToDate:ToDate,Year:Year,Category:Category 
           }, 
           success: function(responsecon) { 
             window.open('http://YOUR_URL','_blank'); 


           } 

          }); 

PHP:

<?php 
    $conn=mysqli_connect('localhost','root','0000','xxxxx'); 

    $filename = "users_export"; 
    $fromdate = mysqli_real_escape_string($mysqli,trim($_POST["fromdate"])); 
    $ToDate = mysqli_real_escape_string($mysqli,trim($_POST["ToDate"])); 
    $Year = mysqli_real_escape_string($mysqli,trim($_POST["Year"])); 
    $Category = mysqli_real_escape_string($mysqli,trim($_POST["Category"])); 
    $sql = "Select * from xxxxxxxxxxx where category='$Category'"; 
    $result = mysqli_query($conn,$sql) or die("Couldn't execute query:<br>" . mysqli_error(). "<br>" . mysqli_errno()); 
    $file_ending = "xls"; 
    header("Content-Type: application/xls"); 
    header("Content-Disposition: attachment; filename=$filename.xls"); 
    header("Pragma: no-cache"); 
    header("Expires: 0"); 
    $sep = "\t"; 
    $names = mysqli_fetch_fields($result) ; 
    foreach($names as $name){ 

    } 
    print ("dasd" . $sep."dasd1" . $sep); 
    print("\n"); 
    while($row = mysqli_fetch_row($result)) { 
     $schema_insert = ""; 
     for($j=0; $j<mysqli_num_fields($result);$j++) { 
      if(!isset($row[$j])) 
      $schema_insert .= "NULL".$sep; 
      elseif ($row[$j] != "") 
      $schema_insert .= "$row[$j]".$sep; 
      else 
      $schema_insert .= "".$sep; 
     } 
     $schema_insert = str_replace($sep."$", "", $schema_insert); 
     $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert); 
     $schema_insert .= "\t"; 
     print(trim($schema_insert)); 
     print "\n"; 
    } 
?> 
+0

Jeder Fehler in der Konsole? Enthalten Ihre Eingaben (fromdate, todate usw.) gültige Daten? Wie druckst du 'responsecon' in deinem' success' Callback? –

Antwort

0

Grundsätzlich gibt es zwei Probleme in Ihrem jQuery ajax Anfrage:

Da Sie einen Inhaltstyp in Ihrem PHP-Skript angeben, müssen Sie jQuery sagen, was Sie von Ihrer Ajax-Anfrage mit dataType: application/xls in Ihrem Ajax-Objekt erwarten können.

Aus diesem Grund erhalten Sie keine Antwort, weil es fehlschlägt und Sie keine error Callback-Funktion angegeben haben, um den Fehler zu behandeln.

Außerdem im Fall des Erfolgs muss man irgendwie den Inhalt aus der PHP-Skript mit so etwas wie $("#selector").html(responsecon);

Hier ist die aktualisierte Ajax-Anforderung zurückgegeben drucken:

$.ajax({ 
    url: "http://localhost/demo.php", 
    type: "post", 
    dataType: "application/xls", // Tell what content-type to expect from server 
    data: { 
     fromdate:fromdate, 
     ToDate:ToDate, 
     Year:Year, 
     Category:Category 
     }, 
    success: function(responsecon) { 
     window.open('http://YOUR_URL','_blank'); 
     $(#"some-container").html(responsecon); // Print the content 
     }, 
    error: function() { 
     alert("error"); 
     } 
    });