2016-10-20 26 views
1

私のフォームでは、WebHookである外部URLにデータをポストしています。ユーザーが送信し、データがwebhookに渡された後、ユーザーを確認ページにリダイレクトしたいと思います。外部URL(webhook)へのPOST、別のURLへのリダイレクト

以下のコードは問題があります。ユーザーがフォームを送信すると、jQueryはユーザーを確認ページに移動させますが、フォームデータはWebフックをトリガーしません(データは収集されません)。誰かが私が間違っているところで助けてもらえますか?

ここに私のコードだ:事前

HTML

<form action="https://externalurl.com/webhook" method="POST"> 
    <input id="email" name="email"> 
    <input id="firstname" name="firstname"> 
    <input id="lastname" name="lastname"> 
    <button type="submit">Submit</button> 
</form> 

jQueryの

$('form').submit(function() { 
    $.ajax({ 
     type: 'POST', 
     url: $(this).attr('action'), 
     dataType: 'json', 
     success: function(json) { 
      window.location.href = "https://www.mypage.com/confirmation"; 
      } 
    }); 
    return false; 
}); 

感謝

+0

フォームを含むドメインと同じドメインに投稿していますか?同じオリジンポリシー(https://developer.mozilla.org/en-US/docs/Web/Security/Same-origin_policy)に違反しているとPOSTが失敗する – jacefarm

答えて

0

フォームに送信ボタンがありますか?

+0

はい、申し訳ありませんサンプルコードが更新されました。 – user7050542

0

ウェブフックにデータを送信していません。試してみてください...

$('form').submit(function() { 
$.ajax({ 
    type: 'POST', 
    url: $(this).attr('action'), 
    data: { 
     "email": document.getElementById('email').value 
     // get other fields 
    }, 
    dataType: 'json', 
    success: function(json) { 
     } 
}); 
return false; 
}); 

実際のフォームが大きければ、フォーム全体のデータをjsonにシリアル化する方法があります。

編集: ajax呼び出しをデバッグする場合は、chromeの開発ツールのネットワークタブを使用して、サーバーに送信している内容とその応答を正確に表示できます。

0

ウェブがwebhookと同じドメインに属していない場合は、webhookサーバでCORSポリシーを設定するか、jsonpのような代替手段を使用する必要があります。

関連する問題