繁体   English   中英

POST中的PHP Post-使用Javascript提交表单

[英]PHP Post within a POST - submit form with Javascript

首先,感谢您抽出宝贵的时间阅读本文。 我遇到了一种独特的情况,希望有人可以帮助我,或者至少将我指向一个新的方向,因为我已经为此奋斗了一段时间而徒劳无功...希望我能解释一下在某种意义上说。

我目前正在对我的index.php文件(来自我们的系统-不是基于Web的文件)进行POST,并且在该文件中,我使用的是第三方供应商.JS文件来标记特定值。 在页面末尾,我有一个javascript函数正在处理标记化过程,然后在对其进行标记化之后,我正在执行javascript表单提交以将标记化后的值发布到API页面以处理该过程的第二部分。

我创建了静态输入字段来测试该过程,并且当我通过“提交”按钮从网页进行处理时,一切都可以正常工作。 但是,当我尝试从我们的系统(不是基于Web的系统)中使用POST流程进行测试时,它并没有遵循我期望的javascript流程。

另外,我正在执行javascript“ onload”功能,因为目标是在POST值发布到页面上并且令牌化过程完成后,它将自动提交表单。

在此先感谢您的帮助-如果您有任何疑问,请让我知道,因为我将密切关注此主题。

示例代码:

<form method="POST" id="APIPOST" action="api.php">
    Mode:        <input name="mode" value="<?php echo $_POST['mode']; ?>">
    Key:         <input name="key" id="key" value="<?php echo $key; ?>">
    Client Name: <input name="client_name" value="<?php echo $_POST['client_name']; ?>">
</form>

<script>
window.onload=(function(){

        //Tokenization code is here
        document.getElementById("APIPOST").submit();
});
</script>

我猜想令牌化代码是异步的,因此在另一个线程上运行。 让我尝试演示。

这是您的Javascript:

window.onload=(function(){

    //Tokenization code is here
    document.getElementById("APIPOST").submit();
});

该行等待页面加载完毕,然后启动脚本

window.onload=(function(){

这是我的猜测, 令牌化代码正在执行某种AJAX调用。 这需要花一点时间才能运行,但不会阻止其余代码运行。

您可能也有一个同源策略问题,但是假设您没有。

    //Tokenization code is here

现在,当您的令牌化代码在后台运行时,您正在尝试提交表单。 很好,但是您的令牌化代码尚未完成其工作,并且令牌值尚未返回。

document.getElementById("APIPOST").submit();

解决方法:将以下行移动到Tokenization代码内返回令牌值之后,而不是调用之后:

document.getElementById("APIPOST").submit();

例如:

function getToken() {
    // make remote call to get token and
    // on valid result, call updateTokenVal()
}

function updateTokenValue(str) {
    // do stuff with str value
    // then submit the form
    document.getElementById("APIPOST").submit();
}

window.onload=(function(){
    //Tokenization code is here
    getToken();
});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM