2016-07-12 6 views
0

Ich habe eine PHP, die Parameter mit Post erhält und am Ende des Prozesses leitet den Benutzer auf eine andere Seite.Aufruf zu einer anderen Seite mit AJAX beim Laden Bild anzeigen

Da der gesamte Prozess bis zu 6 Sekunden dauern kann, wollte ich ein Laden GIF hinzufügen. Ich habe eine andere Seite erstellt, die das Bild zeigt und die erste Seite mit AJAX aufruft.

Egal, was ich versucht habe, ich bin nicht in der Lage, den ganzen Prozess zu arbeiten. Am Ende bekomme ich XMLHttpRequest kann nicht geladen Fehler - Keine 'Access-Control-Allow-Origin'-Header ist auf der angeforderten Ressource vorhanden. Ursprung 'http://localhost:8888' ist daher nicht erlaubt.

Dies ist der Code der Seite, die die PHP-Prozess-Datei aufruft:

<?php 

function generateData(){ 
    global $dpost; 
    foreach ($_POST as $key => $value){ 
     $dpost .= ',' . $key . ':"' . $value . '"'; 
    } 
    $dpost .= ',resultType:"pre"'; 
    $dpost = '{' . substr($dpost, 1) . '}'; 
} 
?> 

<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="default.css"> 
    <script src="http://code.jquery.com/jquery-1.11.3.min.js"></script> 
</head> 
<body> 
    <?php generateData(); ?> 
    <script type="text/javascript" > 
     console.log('1'); 
     var text=''; 
     $.ajax({ 
      url: 'f-api.php', 
      type: 'post', 
      headers: { 'Access-Control-Allow-Origin' : '*'}, 
      crossDomain : true, 
      content_type: 'application/json', 
      dataType: 'json', 
      data: <?php global $dpost; echo $dpost; ?>, 
      success: function(data) { 
       console.log('OK') 
       alert(text); 
       $('.my_update_panel').html(data); 
       $('#loading_spinner').hide(); 
      }, 
      error: function(data) { 
       console.log('Error : ' + data); 
      }, 
      beforeSend: function(xhr) { 
       console.log('Before'); 
       xhr.setRequestHeader('Access-Control-Allow-Origin', '*'); 
      } 
     }); 
    </script> 
    <div> 
     <img src="img/loading-ls.gif"> 
    </div> 
</body> 
</html> 

Dies ist der Code innerhalb des Prozesses PHP-Datei, die zum Ende URL umleiten:

 logger($lfn, 'DEBUG', 'Redirecting to ' . $url, $email); 
    header('Access-Control-Allow-Origin: *;'); 
    header("Location: " . $url); 
    die(); 

Irgendeine Idee, wie man das repariert? Oder vielleicht ein anderes was zu erreichen, wonach ich suche?

+0

Verwenden Sie Chrome? – KRONWALLED

+0

Die Seite, die ich anrufe, f-api.php ist das Ziel einer Formularaktion. Die Zielseite, an die ich aus der f-api.php umadressiere, ändert sich durch die Formularwerte. Ich glaube nicht, dass ich das mit deinem Vorschlag machen kann. –

+0

Es war kein Vorschlag. Testen Sie Ihre lokalen Inhalte in Chrome? – KRONWALLED

Antwort

0

Nein "Access-Control-Allow-Origin-Header auf der angeforderte Ressource vorhanden sind

Dies ist ein Thema, das im Grunde sagt, dass es nicht ermöglicht, eingehende Anfragen auf der Seite und kann festgelegt werden folgendes zu Ihrer .htaccess Datei durch Hinzufügen:

Header add Access-Control-Allow-Origin "*" 
Header add Access-Control-Allow-Headers "origin, x-requested-with, content-type" 
Header add Access-Control-Allow-Methods "PUT, GET, POST, DELETE, OPTIONS" 

Alternativ zu Ihrer .php-Datei, die Sie senden Daten an:

header("Access-Control-Allow-Origin: *"); 
header("Access-Control-Allow-Methods: PUT, GET, POST, DELETE, OPTIONS"); 
header("Access-Control-Allow-Headers: *"); 
+0

Ich habe hinzugefügt und immer noch das gleiche Ergebnis: 'header (" Access-Control-Allow-Origin: * "); header ("Zugriffssteuerungs-Erlauben-Methoden: PUT, GET, POST, DELETE, OPTIONS"); Header ("Zugriffssteuerung-Zulassen-Header: *"); header ("Ort:". $ Url); ' –

+0

@DovevGolan hast du den Code an die Spitze deiner' .php' Datei gesetzt (direkt nach ' Ben

+0

Ja @Ben, ich habe es auch ausprobiert. Immer noch das gleiche Ergebnis. –

Verwandte Themen