dongyu4554
dongyu4554
2015-03-21 20:43

如何在不移动到PHP的下一页的情况下提交表单

已采纳

The Problem

I am trying to submit a form in php but due to the nature of what i want i need the page to not go onto the next one i just want it to submit the data and refresh the current page or whatever, at current it submits the data and goes onto page 2 which i dont want i just need it to submit the data and stay on the current page, if thats possible!

The Code

//page 1 code

<center>
<h1>What Is Jacob Dailey Doing?</h1>


<form method="post" action="jacob_dailey.php">

    <select name="baby_status">
        <option value="playing">Playing</option>
        <option value="awake">Awake</option>
        <option value="sleeping">Sleeping</option>
    </select>


<br />
    <input type="submit" value="Submit"/>
</form>

</center>

//page 2 code

<?php
if (isset($_POST['baby_status'])) {
    $baby = $_POST['baby_status'];
    setcookie("baby_status", $baby, time() + 31556926, '/'); //  Data will Store For 1 Year
    header('Location: ' . $_SERVER['PHP_SELF']);
}
$status = $_COOKIE['baby_status'];
echo '<center> <h1>Baby Jacob Dailey Is Currently ' . ucwords($status) . '</h1>';
if ($status == "playing") {
    echo '<img src="http://cdn.sheknows.com/articles/2013/02/baby-playing-with-blocks.jpg"/>';
}
elseif ($status == "awake") {
    echo '<img src="http://www.westheimphoto.com/lightbox/gallery/TaiwanStockPhotos/TWNhw1221.jpg"/>';
}
elseif ($status == "sleeping") {
    echo '<img src="http://www.babycare.onlymyhealth.com/imported/images/neonatal/2012/July/19_Jul_2012/6-Months-Old-ssl.jpg"/>';
}
echo '</center>';
?>

Page 2 code shouldnt be as important but i just need it so when i click submit on page 1 it updates the information on page 2 but doesnt take me to page 2.

Cheers!

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

4条回答

  • dousongxuan7507 dousongxuan7507 6年前

    Your form can submit onto itself. Just in the action="xyz" either leave it (the whole action=... attribute) out entirely or else name the page that also contains the form there between quotes.

    Then when you load the page you check the $_POST or $_GET array (depending on the method) to see if the submit button was pushed or if someone just navigated to the page. (You'll want to give you submit button a name="foo".)

    点赞 评论 复制链接分享
  • dougui5419 dougui5419 6年前

    Solution: Update Status Without Page Reload Using XHR and Filesystem Storage

    If you want someone on another computer to see the update, then you'll need to store that information on the server. You could store the information in a database, but for this small bit of information I'm using the filesystem.

    page1.php

    <?php
    
    // get baby status if available
    if ( is_readable('baby_status.php') ) {
      include 'baby_status.php';
    }
    $status =  ( $status )? $status: '??';
    
    // prepare to update select list
    list($pl_check, $pl_check, $pl_check) = array('', '', '');
    switch ( $status ) {
      case 'playing':  $pl_check = ' selected '; break;
      case 'awake':    $aw_check = ' selected '; break;
      case 'sleeping': $sl_check = ' selected '; break;
    }
    
    ?>
    
    <center>
    <h1>What Is Jacob Dailey Doing?</h1>
    <form id="baby_form" method="post" action="update_baby.php">
        <select id="baby_status" name="baby_status">
            <option value="playing" <?php echo $pl_check ?>>Playing</option>
            <option value="awake"   <?php echo $aw_check ?>>Awake</option>
            <option value="sleeping"<?php echo $sl_check ?>>Sleeping</option>
        </select><br />
        <input type="submit" value="Submit"/>
    </form>
    
    <a href="page2.php">See Baby Status</a>
    </center>
    
    <script>
    
    // XHR/PHP/Filesystem method
    function update_baby () {
      var baby_status = document.getElementById('baby_status');
      var status=encodeURIComponent(baby_status.options[baby_status.selectedIndex].value)
      var parameters = 'baby_status=' + status
    
      // set up XHR object
      var xhr = new XMLHttpRequest()
      xhr.open('POST', 'update_baby.php', true)
      xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded')
      // handle response
      xhr.onload = function () {
        console.log(this.responseText)
        alert(this.responseText)
      }
      xhr.send(parameters) 
    }
    
    // hook up baby status function to form submit
    document.getElementById('baby_form').addEventListener('submit', function(evt){
      evt.preventDefault()
      update_baby()
    })
    
    </script>
    

    page2.php

    <?php
    
    // execute baby update code and get current status
    include 'update_baby.php';
    
    echo '<center> <h1>Baby Jacob Dailey Is Currently ' . ucwords($status) . '</h1>';
    if ($status == "playing") {
        echo '<img src="http://cdn.sheknows.com/articles/2013/02/baby-playing-with-blocks.jpg"/>';
    }
    elseif ($status == "awake") {
        echo '<img src="http://www.westheimphoto.com/lightbox/gallery/TaiwanStockPhotos/TWNhw1221.jpg"/>';
    }
    elseif ($status == "sleeping") {
        echo '<img src="http://www.babycare.onlymyhealth.com/imported/images/neonatal/2012/July/19_Jul_2012/6-Months-Old-ssl.jpg"/>';
    }
    
    ?>
    
    <br>
    <a href="page1.php">Update Baby Status</a>
    </center>
    

    update_baby.php

    <?php
    
    if (isset($_POST['baby_status'])) {
        $status = $_POST['baby_status'];
    
        // prepare php script text for baby status file
        $status_write = <<<EOT
    <?php
    
    \$status = '$status';
    
    ?>
    EOT;
    
        // write status to baby_status.php
        if ( $baby_status_file = fopen('baby_status.php', 'w') ) {
            fwrite($baby_status_file, $status_write);
            fclose($baby_status_file);
        }
    
        echo 'Baby status updated.';
    }
    else {
        if ( is_readable('baby_status.php') ) {
            include 'baby_status.php';
        }
        $status = ( $status )? $status: '??';
    }
    
    ?>
    

    Note: To use this option the directory these files are in must be writeable by the web server.

    点赞 评论 复制链接分享
  • dongque4778 dongque4778 6年前

    You can use jQuery.ajax(). Example here: http://www.formget.com/form-submission-using-ajax-php-and-javascript/

    This example uses a database, but you can use a php file to return values and read them from the response in javascript. Do not put any action to the form but enable a click event handler on the submit button to enable the function.

    Also my example here: http://dev.ossipesonen.fi/alkoholilaskuri/ A very simple form where you insert values, pass them onto PHP with $_POST and then calculates the right amounts and sums, and you print them in the response.

    点赞 评论 复制链接分享
  • douhuiqi3855 douhuiqi3855 6年前

    action="jacob_dailey.php" in your form takes you to that page, you either paste your php code to main page and replace action with just "" or you will search AJAX and learn how to it with that

    点赞 评论 复制链接分享