これは、Worldpay支払いゲートウェイに投稿される支払いフォームです。WorldPayのドキュメントに従ってすべてのパラメーターがあり、直接投稿すると正常に機能します。
しかし、今私はしようとしています
- AJAXは最初にフォームを私のサイトに投稿し(jquery.formを使用し、その部分は正常に機能しています)、次にいくつかのデータベース操作を実行します
- 次に、javascriptを使用してアクション属性を変更し、Worldpayに投稿します。しかし、worldpayの投稿は機能しておらず
$("form#wpftuf").submit();
、次のコードの行の後に警告されたものも警告されていません。
お支払いフォーム
<form name="wpftuf" id="wpftuf" method="post" action="http://url/of/ajax/file/add_credit">
<input type="hidden" name="operation" value="add_credit" id="operation" /> <?php // for ajax validation ?>
<input type="hidden" name="worldpayUrl" value="<?php echo WPurl?>" id="worldpayUrl" />
...
..
...other necessary fields
</form>
ここでは、worldpayのURLをパラメーターとして渡します
AJAXバインディング
$(document).ready(function()
{
var options = {
dataType: 'json',
beforeSubmit: function()
{
//alert("submitting");
},
success: function(data)
{
if(data)
{
if(data.success)
{
var worldpayUrl = $("input[id=worldpayUrl]").val();
$("form#wpftuf").attr("action",worldpayUrl);
alert("this works");
$("form#wpftuf").submit();
//This alert does not work
alert("this alert does not work "+$("form#wpftuf").attr("action"));
}
}
}
,
error:function()
{
alert("validation failed");
}
};
$("form#wpftuf").ajaxForm(options);
});
アクションを変更してajaxフォームの成功イベント内で送信しようとしているのに、フォームがまだ残っているため、エラーが発生していると思いますbinded
。だから、私は盲目的に、行の後に(1つずつ)入れてみまし$("form#wpftuf").unbind(options);
た$("form#wpftuf").unbind();
$("form#wpftuf").unbind(ajaxForm);
が$("form#wpftuf").attr("action",worldpayUrl);
、すべての場合でこのエラーが発生しますuncaught exception: Permission denied to call method XMLHttpRequest.open
ajaxフォームの処理が成功した後、フォームを動的にworldpayに送信するにはどうすればよいですか。フォームを最初にする必要がありますunbinded
か?助けてください。これは簡単な解決策があるかもしれませんが、私はそれを得ることができません。たくさん検索しました。
ご注意ください
worldpayペイメントゲートウェイでは、投稿後にユーザーがフォームに入力する必要があるため、を使用したAJAX送信は機能しajaxSubmit()
ません。そこで通常のフォーム送信が必要です。
ありがとう、
Sandeepan