1

現在、GET メソッドを使用してアフィリエイトにデータを送信するフォームがあります。問題は、ユーザーがフォームに入力すると、GET アクションが移動するのと同じ URL にリダイレクトされることです。これは、ランダム コードの API ページです。

フォームからの情報がまだそのアフィリエイト API ページに送信されている間に、フォームに記入したユーザーを私がホストするサンキュー ページにリダイレクトする必要があります。

アフィリエイト API ページを操作できません。これを行うにはどうすればよいですか?POST、iframe、ajax、onsubmit など、さまざまな回答を聞いています。

どの方法が最も効果的で、その理由を確認できますか?

4

5 に答える 5

2

編集チャットで話し合った結果、サーバー側の投稿がより良い方法であるという結論に達しました。実装例を次に示します。

HTML:

<form id="my_form">
<!-- form elements -->
</form>
<div id="status_message"></div>

Javascript:

$('#my_form').on('submit', function (e){
    $.ajax({
      type: "POST",
      url: "localProxy.php",
      data: $('#my_form').serialize(),
      success: function (response) {
         // do something!
      },
      error: function () {
         // handle error
      }
    });
});

PHP (localProxy.php)

$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, 'http://thirdpartydomain.internet/login_url.php'); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $_POST);
curl_setopt ($ch, CURLOPT_POST, 1);
$result = curl_exec ($ch);
curl_close($ch);

// do something with the data on your end (if anything), or render the "thank you" page
die('<h1>Thanks!</h1>');

元の答え

いくつかのアプローチがあります。

最初の方法では、jQuery を使用していることを (タグを介して) 言及します。その場合、jquery のajaxメソッドを使用して、データを API投稿することも、独自のサーバーに投稿して感謝のメッセージを取得することもできます。

<form id="my_form">
<!-- form elements -->
</form>
<div id="status_message"></div>

...「準備完了」機能で:

var API_URL = 'http://www.some-api-provider.com/api.php';
var MY_URL = 'http://www.my-website.net/post_handler.php';
$('#my_form').on('submit', function (e){
    e.preventDefault();
    var error = false;

    // validation here, if there is an error, set error = true;

    if (error == true) {
        alert('There was a problem!'); // do something better than this!
        return false;
    }

    $.ajax({
      type: 'GET',
      url: API_URL,
      data: $('my_form').serialize(),
      success: function () {
        $.ajax({
          type: 'POST',
          url: MY_URL,
          data: $('#my_form').serialize(),
          success: function (response) {
            $('status_message').html(response);
          },
          error: function () {
            alert('There was a problem!'); // do something better than this!
          }
        });
      },
      error: function () {
        alert('There was a problem!'); // do something better than this!
      }
    });
    return false;
});

そこで何が起こっているのですか?このイベントを使用してon、イベント リスナーをフォームの「送信」イベントにバインドします。ユーザーが [送信] ボタンをクリックすると、そのリスナー コードが呼び出されます。

次に、フォームのデータをシリアル化し、GET 経由で API に送信します。それが機能している限り、success 関数が呼び出され、POST 経由でサーバーにデータが送信されます。divstatus_messageは、サーバーから返された結果で更新されます。

もう 1 つの方法は、通常どおりにデータをサーバーに送信してから、cURL またはその他のサーバー側の HTTP 接続を使用してデータを API に送信することです。JavaScriptへの依存度が低いため、この方法を好むかもしれません。ユーザーがスクリプトをオフにしている場合、javascript メソッドは失敗します。

使用しているサーバー側のテクノロジがわからないと、例を挙げられませんでしたが、その方法で問題が発生した場合は、いつでも別の質問をすることができます!

ドキュメンテーション

于 2012-08-14T04:06:16.653 に答える
1

ajaxおよびonSubmitイベントを使用して、データをAPIに送信し、リダイレクトします。

$('form').onSubmit(function(){
 $.ajax({
  ... //your informations to send to the api
  success:function(){
    ...//your redirection to the success page
  }
 });
});

jqueryのajaxに関する詳細情報

于 2012-08-14T03:53:18.610 に答える
1

jqueryを使用するのは良い方法です。これが私がそれをする方法です

$("#formID").submit(function()
{
    $.get('getUrl', { param1Name: param1Data, param2Name: param2Data (etc...) }, function(data)
    {
        document.location = "redirectURL";
    });

    return false;
});
于 2012-08-14T03:55:11.623 に答える
0

Ajax を使用することをお勧めします。Ajax 関数が成功した場合は、次を使用してリダイレクトを使用します。

window.location.href = "thankyou.html";

于 2012-08-14T04:01:17.810 に答える
0

jquery ajaxメソッドは、この目的に最適です。このように使用します

$.ajax({   
    type: "POST",   
    url: method path here,   
    data: jsonText,   
    contentType: "application/json; charset=utf-8",   
    dataType: "json",   
    success: function (response) {   
    if (response.d != '') {   
    //redirect code           
     }   
     },   
     failure: function (response) {   
     alert(response.d);   
     }
     });
于 2012-08-14T04:02:03.053 に答える