2

2つのフォームがあるページがあります。最初のフォームは、ユーザーが名前や住所などの詳細を入力する場所です(送信ボタンはありません)。2番目のフォームは、購入の詳細をペイパルに送信します。私は現在、onClickイベントでペイパルフォーム送信ボタンを使用して、phpスクリプトへの$.postを介してユーザーの詳細をデータベースに入力する関数を呼び出しています。

HTML:

    <form id="regcust">
    <input type="text" name="fName" id="fName">
    <input type="text" name="lName" id="lName">
    </form>

    <form id="paypal_button_form" action="https://www.paypal.com/cgi-bin/webscr" method="post">
    <input type="image" src="/img/buynow.gif" onClick="registerCustomer()" name="submit">
    </form>

jQuery:

    function registerCustomer() {
        var form = document.getElementById("regcust");
        var fn   = $("input[name='fName']").val();
        var ln   = $("input[name='lName']").val();

        $.post("RegisterCustomer.php", {  
            fName: fn, 
            lName: ln 
        });
    };

Note: I have stripped this right down for clarity.

私はChromeでサイトを構築しましたが、すべてが正常に機能します。ユーザーがペイパルボタンを押すと、詳細がデータベースに記録され、ユーザーはペイパルに送られ支払いが行われます。しかし、Firefoxでテストしたところ、ユーザーの詳細がキャプチャされていません。ユーザーは詳細を入力せずにペイパルに送られますか?-編集:関数内にalert()を配置すると、これは正常に起動するため、詳細が記録されていないのは奇妙に思えます。

私はこのサイトをグーグルで検索し、同様の問題/回答を見つけましたが、それらのどれも私のスクリプトでは機能しません。私もfirebugをインストールして試してみましたが、PHPの人として正直に言うと、jQuery / javascriptのデバッグは、表示されているすべての情報を見ると少し混乱します-エラーウィンドウは常に空ですか?

誰かが私のためにこれに光を当てることができますか、または私が頭を回すことができないので私を正しい方向に向けてください。

前もって感謝します。

編集:awlによって投稿された回答は私の問題を修正しました、ありがとう;)私は彼の回答に投票しようとしましたが、私の担当者は低すぎてそうすることができないようです。

Chromeでは機能するがFirefoxでは機能しない理由を誰かが明らかにすることはできますか?何が起こったのか(または起こらなかったのか)を理解してみたいので、このような状況は避けたいと思います。

4

2 に答える 2

2

ボタンのクリックイベントとフォームの送信の間に競合状態があるようです。これらのイベントを明示的にチェーンして、常に希望する順序で発生するようにすることができます。このコードはRegisterCustomerを送信し、それが終了した後にのみペイパルフォームを送信します。これを私の頭のてっぺんから書きました、私は適切ではありません:

<form id="regcust">
<input type="text" name="fName" id="fName">
<input type="text" name="lName" id="lName">
</form>

<form id="paypal_button_form" action="https://www.paypal.com/cgi-bin/webscr" method="post">
</form>

<a href="javascript:;" id="buyNow"><img src="/img/buynow.gif"></a>

JS:

$(document).ready(function() {
  $("#buyNow").click(function() {
    var form = $("#paypal_button_form");
    var fn   = $("#fName").val();
    var ln   = $("#lname").val();

    $.post("RegisterCustomer.php", {  
        fName: fn, 
        lName: ln 
    }, function() {
         form.submit()
    });
  });
});
于 2013-02-06T21:32:05.610 に答える
0
$(document).ready(function() {
  $("#buyNow").click(function() {
    var form = $("#paypal_button_form");
    var fn   = $("#fName").val();
    var ln   = $("#lname").val();

    $.post("RegisterCustomer.php", {  
        fName: fn, 
        lName: ln 
    }).done( function() {
    form.submit();
});
  });
});
于 2014-03-10T17:48:41.587 に答える