2017-09-18 9 views
0

同じPHPページで2つの別個のcURLリクエストを作成しています。私自身がページを読み込むと、期待どおりに動作し、それぞれの要求が異なる正しいデータを返します。2つのcURLリクエストがAJAX経由でロードされたときに同じデータを表示しています

ただし、AJAX経由でページを読み込むと、2番目のリクエストでは最初のリクエストと同じデータが表示されます。なぜこうなった?以下のコードは、次のとおりです。

$auth = base64_encode('user:'.$api_key); 
    $data = array(
     'apikey'  => $api_key, 
    ); 
    $json_data = json_encode($data); 
    $ch = curl_init(); 
    $ch2 = curl_init(); 

    $curlopt_url = "https://us7.api.mailchimp.com/3.0/reports/".$_GET['id']; 
    curl_setopt($ch, CURLOPT_URL, $curlopt_url); 
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET"); 
    curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: Basic '.$auth)); 
    curl_setopt($ch, CURLOPT_USERAGENT, 'PHP-MCAPI/3.0'); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch, CURLOPT_POST, true); 
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data); 
    $result = curl_exec($ch); 
    $results = json_decode($result, true); ?> 

    $curlopt_url_b = "https://us7.api.mailchimp.com/3.0/reports/".$_GET['id'].'/sent-to/?count=5000 '; 

    curl_setopt($ch2, CURLOPT_URL, $curlopt_url_b); 
    curl_setopt($ch2, CURLOPT_CUSTOMREQUEST, "GET"); 
    curl_setopt($ch2, CURLOPT_HTTPHEADER, array('Content-Type: application/json','Authorization: Basic '.$auth)); 
    curl_setopt($ch2, CURLOPT_USERAGENT, 'PHP-MCAPI/3.0'); 
    curl_setopt($ch2, CURLOPT_RETURNTRANSFER, true); 
    curl_setopt($ch2, CURLOPT_TIMEOUT, 10); 
    curl_setopt($ch2, CURLOPT_POST, true); 
    curl_setopt($ch2, CURLOPT_SSL_VERIFYPEER, false); 
    curl_setopt($ch2, CURLOPT_POSTFIELDS, $json_data); 
    $recipient_result = curl_exec($ch2); 
    $recipients = json_decode($recipient_result, true); 

彼らは完全に異なるエンドポイントから結果を返す必要がある場合、AJAX、$受信者== $結果を経由してロードされたとき。何がありますか?

+0

結果とjson_encode()を一度結合する必要があります。 '$ results'と' $ recipients'でやっていること –

+0

@LawrenceCheroneしかし、AJAX経由ではなく、それ自身でロードすると、なぜ動作しますか? – BFWebAdmin

+0

'{} {}'を奇妙に見れば2つのjsonオブジェクトが得られる可能性は非常に低いですが、jqueryは1つしか解析しません。 –

答えて

0

問題は、AJAXリクエストであり、cURLリクエストではありませんでした。 AJAXリクエストはURLに追加のパラメータ(この場合は 'ajax = true')を追加しました。このパラメータは$ _GET変数に渡され、間違ったエンドポイントを要求していました。 URLがJSによって変更されなかったため、独立してロードされたときに正しくロードされました。

関連する問題