У меня есть следующая функция javascript
txJ$(document).ready(function () { // Hide the error display, as there is currently no error txJ$("#TokenProxy_Error").css('display', 'none'); //txJ$(".submit").closest("form").submit(function (e) { txJ$(".submit").closest("form").submit(function (event) { //check for encryption key { TxEncrypt(event); } }); }); function TxEncrypt(event) { //perform encryption of token data, then submit the form like normal //obtain public key and initial JSEncrypt object var txPubKey = 'jjh'; var txEncrypter = new JSEncrypt(); txEncrypter.setPublicKey(txPubKey); //get Data and encrypt it var txData = '{}'; var txCryptData = ''; if(txJ$(".data").length > 1) { //if there are more than one element with this class, convert it to json string txData = txJ$(".data").serializeObject(); txCryptData = txEncrypter.encrypt(JSON.stringify(txData)); } else { //else, just encrypt the value txData = txJ$(".data").val(); txCryptData = txEncrypter.encrypt(txData); } dataString = txCryptData; var xhr = new XMLHttpRequest(); var params=dataString; var token; xhr.onreadystatechange = function() { if (xhr.readyState == 4 && xhr.status==200) { token=xhr.responseText; alert(token); //add value/field to form txCvv = txJ$(".cvv").val(); var MyForm = txJ$(".zwitch_submit").closest("form"); txJ$('<input type="hidden">').attr({ id: 'token', name: 'token' }).val(token).appendTo(MyForm); txJ$('<input type="hidden">').attr({ id: 'cvv', name: 'cvv' }).val(txCvv).appendTo(MyForm); //scrub data that we do not want to post txJ$(".data").removeAttr('name'); txJ$(".cvv").removeAttr('name'); } } xhr.open('POST', 'tokenize.php', false); xhr.send(params);
Форма html
<form method="POST" action="pp.php"> <input type="text" class="data" name="ccnumber" value="4048341128241910" /> <input type="text" class="cvv" name="cvv" /> <input type="submit" class="submit" value="tokenize" /> </form>
когда скрипт запускается, im получает форму как
<form method="POST" action="pp.php"> <input type="text" class="data" name="ccnumber" value="4048341128241910" /> <input type="text" class="cvv" name="cvv" /> <input type="submit" class="submit" value="tokenize" /> <input type="hidden" name="card_token" /> </form>
Поле <input type="hidden" name="card_token" />
которое было добавлено с помощью javascript, появляется после кнопки отправки, так что поле не отправляется.
Как я могу добавить это поле перед кнопкой отправки, любую помощь?