dpp66953 2016-05-16 17:53
浏览 49
已采纳

如何在提交表单时将PHP变量传递给Javascript cookie?

I am setting up a custom form to be used in my wordpress site. What I would like to do is grab the AUTO_INCREMENT ID of that submission and pass it into a Javascript cookie when the form is submitted. Currently the ID is working, but because the ID isn't grabbed until after the form is submitted, I'm having trouble figuring out how I can pass the variable into the cookie immediately after the form has been submitted(currently I have to submit the form twice before the cookie with the ID is created, and its 1 number lower than it should be since it's a submission behind).

Here's what I have currently:

<?php
if(isset($_POST["submit"])) {
    $name = $_POST['full_name'];
    $city = $_POST['city'];
    $state = $_POST['state'];
    $email = $_POST['email'];

    $wpdb->insert(
        'reps',
        array(
            'name' => stripslashes($name),
            'city' => stripslashes($city),
            'state' => stripslashes($state),
            'email' => stripslashes($email)
        )
    );

    $lastid = $wpdb->insert_id;
}
?>
<script>
$('#dealer-form').submit(function() {
    var repID = '<?php echo $lastid ?>';
    setCookie('ID', repID);
});
</script>

As I mentioned this code works on the second submission(since the variable has no value on the first submission), and the ID is 1 number behind because it is grabbing the ID of the previous submission before reassigning the variable value.

  • 写回答

1条回答 默认 最新

  • dsb0003795 2016-05-16 18:02
    关注

    PHP, being a server-side scripting language, is executed before the data is sent to your browser. JavaScript, a client-side scripting language, is executed as soon as the script is encountered by the browser.

    Your approach is forgetting this separation between front- and back-end.

    To accomplish what you're trying to do, simply output the setCookie call when you've submitted your form in php:

    <?php
        if(isset($_POST["submit"])) {
            $name = $_POST['full_name'];
            $city = $_POST['city'];
            $state = $_POST['state'];
            $email = $_POST['email'];
    
            $wpdb->insert(
                'reps',
                array(
                    'name' => stripslashes($name),
                    'city' => stripslashes($city),
                    'state' => stripslashes($state),
                    'email' => stripslashes($email)
                )
            );
    
            $lastid = $wpdb->insert_id;
    
            printf( '<script>setCookie("ID", %d);</script>', $lastid );
        }
    ?>
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 echarts动画效果失效的问题。官网下载的例子。
  • ¥60 许可证msc licensing软件报错显示已有相同版本软件,但是下一步显示无法读取日志目录。
  • ¥15 Attention is all you need 的代码运行
  • ¥15 一个服务器已经有一个系统了如果用usb再装一个系统,原来的系统会被覆盖掉吗
  • ¥15 使用esm_msa1_t12_100M_UR50S蛋白质语言模型进行零样本预测时,终端显示出了sequence handled的进度条,但是并不出结果就自动终止回到命令提示行了是怎么回事:
  • ¥15 前置放大电路与功率放大电路相连放大倍数出现问题
  • ¥30 关于<main>标签页面跳转的问题
  • ¥80 部署运行web自动化项目
  • ¥15 腾讯云如何建立同一个项目中物模型之间的联系
  • ¥30 VMware 云桌面水印如何添加