Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法向行动提交表格_Javascript_Php_Jquery_Html_Forms - Fatal编程技术网

Javascript 无法向行动提交表格

Javascript 无法向行动提交表格,javascript,php,jquery,html,forms,Javascript,Php,Jquery,Html,Forms,我在javascript中有这个函数 txJ$(document).ready(function () { //txJ$(".submit").closest("form").submit(function (e) { txJ$(".submit").closest("form").submit(function (event) { //check for encryption key { TxEncrypt(event); } });

我在javascript中有这个函数

txJ$(document).ready(function () {


    //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 = '123';
    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$(".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', true);
    xhr.send(params); 
    event.preventDefault();



}
txJ$(文档).ready(函数(){
//txJ$(“.submit”).最近的(“表格”).提交(功能(e){
txJ$(“.submit”).closest(“表单”).submit(函数(事件){
//检查加密密钥
{TxEncrypt(事件);}
});
});
函数TxEncrypt(事件)
{//执行令牌数据的加密,然后像正常一样提交表单
//获取公钥和初始JSEncrypt对象
var txPubKey='123';
var txEncrypter=new JSEncrypt();
txEncrypter.setPublicKey(txPubKey);
//获取数据并对其进行加密
var txData='{}';
var txCryptData='';
如果(txJ$(“.data”).length>1)
{//如果此类中有多个元素,请将其转换为json字符串
txData=txJ$(“.data”).serializeObject();
txCryptData=txEncrypter.encrypt(JSON.stringify(txData));
}
其他的
{//否则,只需加密该值即可
txData=txJ$(“.data”).val();
txCryptData=txEncrypter.encrypt(txData);
}
dataString=txCryptData;
var xhr=new XMLHttpRequest();
var params=数据字符串;
var代币;
xhr.onreadystatechange=函数(){
如果(xhr.readyState==4&&xhr.status==200){
令牌=xhr.responseText;
警报(令牌);
//在表单中添加值/字段
txCvv=txJ$(“.cvv”).val();
var MyForm=txJ$(“.submit”).最近的(“表格”);
txJ$('').attr({
id:'令牌',
名称:“令牌”
}).val(代币).appendTo(MyForm);
txJ$('').attr({
id:'cvv',
名称:“cvv”
}).val(txCvv).appendTo(MyForm);
//清理我们不想发布的数据
txJ$(“.data”).removeAttr('name');
txJ$(“.cvv”).removeAttr('name');
}
}
open('POST','tokenize.php',true);
xhr.send(参数);
event.preventDefault();
}
表格是

<form method="POST" action="pp.php">

<input type="text" class="data" name="ccnumber" value="4242424242424242" />
<input type="text" class="cvv" name="cvv" />



<input type="submit" class="submit"  value="tokenize" />

</form>

脚本所做的是,从输入字段中获取值,将数据作为类,并从xmlhttpsrequest中处理它,从服务器获取令牌,将令牌作为隐藏字段附加到表单中,然后提交表单。这就是我想要做的

当我单击submit按钮时,所有这些都会发生

但是很明显,由于存在
event.preventDefault();
表单将无法正常提交到操作。但是如果我删除
event.preventDefault();
,隐藏字段不会被追加,更多的xmlhttprequest不会被发送

我尝试了
MyForm.submit();
if(xhr.readyState==4&&xhr.status==200){
中,但它所做的是反复调用相同的函数


在函数运行后,是否有某种方法可以将表单提交给操作(而不是调用此函数)?

我给您提供了代码示例,您需要对代码进行细化和处理 首先在表单中添加一个
id=“myform”

$(document).ready(function () {
    $("#myform").submit(function (e) {
       e.preventDefault(); // stop refresh form
      // get your data and do your stuff with that
        $.ajax({
                type: "POST",
                url: "tokenize.php",
               // send your data will be post
                data: {
                    name: "Rakesh",
                    time: "2pm"
                },
                success: function (data) {
                   // remove elements from form
                      $('.data').remove();
                      $('.cvv').remove();
                    // adding a hidden field to form
                     $('<input />').attr('type', 'hidden').attr('name', "something").attr('value', "something").appendTo($('.submit').closest('form'));

                }
            });
    });
});
$(文档).ready(函数(){
$(“#myform”).submit(函数(e){
e、 preventDefault();//停止刷新表单
//获取您的数据并利用这些数据完成您的工作
$.ajax({
类型:“POST”,
url:“tokenize.php”,
//发送您的数据将被张贴
数据:{
名称:“Rakesh”,
时间:“下午2点”
},
成功:功能(数据){
//从表单中删除元素
$('.data').remove();
$('.cvv').remove();
//向窗体添加隐藏字段
$('').attr('type','hidden').attr('name','something').attr('value','something').appendTo($('.submit').closest('form'));
}
});
});
});

如何/在何处调用js函数?这是代码的一小部分,javascript代码中还有一些其他函数。这是javascript内部调用的最后一个函数。submit有一个类“submit”它调用javascriptfunction@RakeshSharma请参阅javascript@RakeshSharma有机会吗?检查我的答案,试试看,让我知道