如何使用jquery将单个表单值发送到php中的多个页面

时间:2018-01-10 08:01:10

标签: javascript php jquery forms

在PHP中我正在处理表单已提交时,值应该发送到不同的文件使用jquery。例如,如果已经提交了demo.php表单,则数据应同时发送到process1.php和process2.php但它没有显示任何错误而无法获得输出。 请帮助我完成我迄今为止尝试过的代码

Demo.php

<!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8">
        <title>main form</title>
    </head>
    <body>
    <form action="multi.php" method="post">
        Name:<input id ='myname'>
        <input type="button" id="btn" value="send to all">
    </form>

    <script
        src="https://code.jquery.com/jquery-1.12.4.min.js"
        integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
        crossorigin="anonymous"></script>
    <script type="text/javascript">
        $(function(){
            $('#btn').click(function(){
                var username = $('#myname').val();
                /*first post*/
                $.post('multi1.php',{name:username},function(result){
                    $('#display').append("<br>"+result);
                });
                $.post('multi2.php',{name:username},function(result){
                    $('#display').append("<br>"+result);
                });
            });
        });
    </script>
</body>

multi1.php

<?php
    echo "this is process1";
    echo"and you have posted:".$_POST['name'];
?>

multi2.php

<?php
    echo "this is process1";
    echo"and you have posted:".$_POST['name'];
?>

3 个答案:

答案 0 :(得分:1)

这样的事情:

let formID = $("uFormId");
formID.submit(function(event) {
     event.preventDefault(); // Stop to call URL

$.ajax({url: "multi1.php", data: formID.serialize() ,type: 'POST', success: function(data) { 
    console.log("Response from multi1 PHP: " + data); 
    //OR
    $('#display').innerText = data;
    }
$.ajax({url: "multi2.php", data: formID.serialize(),type: 'POST', success: function(data) {
    console.log("Response from multi2 PHP: " + data); 
    }
}

但是,有几种艺术可以通过javascript制作这个活动,你可以在jQuery AJAX submit form

中找到很多这样的活动。

答案 1 :(得分:1)

以下代码对我来说很好:

<!DOCTYPE html>
    <html>
    <head>
        <title>main form</title>
    </head>
    <body>
        <form>
            Name:<input id ='myname'>
            <input type="button" id="btn" value="send to all">
        </form>
        <div id="display"></div>

        <script
        src="https://code.jquery.com/jquery-1.12.4.min.js"
        integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
        crossorigin="anonymous"></script>
        <script>
            $(document).ready(function(){
                $('#btn').click(function(){
                    var username = $('#myname').val();
                    /*first post*/
                    $.post('multi1.php',{name:username},function(result){
                        $('#display').append("<br>"+result);
                    });

                    /*second post*/
                    $.post('multi2.php',{name:username},function(result){
                        $('#display').append("<br>"+result);
                    });
                });
            });
        </script>
    </body>
</html>

<强> multi1.php

<?php
    echo 'Posted on multi1.php - '.$_POST['name'];
?>

<强> multi2.php

<?php
    echo 'Posted on multi2.php - '.$_POST['name'];
?>

当我在文本框中输入'test'并点击'send to all'按钮时,我得到的输出是:

  

发表于multi1.php - 测试
  发表于multi2.php - test

答案 2 :(得分:0)

检查您要发布的文件名,我假设您尝试从其他php页面访问已发布的变量而不进行存储。

一般情况下,如果您发出HTTP请求(在您的情况下,它是POST),浏览器会将该值发送到另一页并忘记它,当您尝试从其他页面访问该值时页面(如,process1.php)它将返回一个空字符串,因为它没有存储变量。

所以,解决方案是使用javaScript将值存储在localstorage中,并尝试从其他页面访问该变量。

这是更新的代码

    $(function(){
      $('#btn').click(function(){
        var $username = $('#myname').val();
         window.localStorage.setItem('username', $username);
      });
    });

并使用

获取存储的值
var $userName = window.localStorage.getItem('username')

您可以了解herehere