2016-07-12 5 views
0

私は、投稿と一緒にパラメータを取得するPHPを使用していますが、プロセスの最後に別のページにリダイレクトされます。画像を表示しているときにAJAXを使用して別のページに電話する

プロセス全体に最大6秒かかることがあるため、ローディングGIFを追加したいと考えました。 イメージを表示する別のページを作成し、AJAXを使用して最初のページを呼び出しました。

私が何を試しても、私はプロセス全体を動作させることができません。 最終的にXMLHttpRequestが読み込めません - 要求されたリソースに 'Access-Control-Allow-Origin'ヘッダーがありません。 Origin 'http://localhost:8888'はアクセスできません。

これは、PHPプロセスファイル呼び出すページのコードです:

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

:これが最後のURLにリダイレクトするプロセスのPHPファイル内のコードである

<?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> 

をどのようにこれを修正するための任意のアイデア? それとも、私が探しているものを達成するために別のもの?

+0

あなたはChromeを使用していますか? – KRONWALLED

+0

私が呼んでいるページ、f-api.phpはフォームアクションの宛先です。 f-api.phpからリダイレクトされるターゲットページは、フォームの値によって変更されています。私はあなたの提案でこれを行うことができるとは思わない。 –

+0

それは示唆ではありませんでした。 Chromeでローカルのものをテストしますか? – KRONWALLED

答えて

0

いいえ「アクセス制御-起源許可」

これは、基本的にはページへの着信要求を許可しないことだ、と固定することができると言う問題であるヘッダが要求されたリソース上に存在します

:あなたがにデータを送っているあなたの .phpファイルに、また

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" 

:あなたの.htaccessファイルに以下を追加することにより、

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

私はまだ同じ結果を追加しました: 'header(" Access-Control-Allow-Origin:* "); ヘッダー( "アクセス制御許可メソッド:PUT、GET、POST、DELETE、OPTIONS"); ヘッダー( "Access-Control-Allow-Headers:*"); header( "Location:"。$ url); ' –

+0

@DovevGolanはあなたの' .php'ファイルのTOP( '<?php'の直後)にそのコードを入れましたか? – Ben

+0

はい@Ben、私もそれを試しました。それと同じ結果。 –

関連する問題