简体   繁体   English

如何通过Ajax将PHP输出返回到页面?

[英]How to get my PHP output back to a page via Ajax?

I'm trying to get a response back from a php script, so I dont have to reload the page and display some animations. 我正在尝试从php脚本获取响应,因此我不必重新加载页面并显示一些动画。

I have both parts working, but when I try to put them together, nothing works. 我的两个部分都在工作,但是当我尝试将它们放在一起时,没有任何效果。

Right now I send the input data via Ajax, but I can't bring the results back. 现在,我通过Ajax发送输入数据,但无法将结果返回。

Please help me, thanks in advance. 请帮助我,在此先感谢。

HTML HTML

<head>

    <title>
        Consultapp :: Consultar
    </title>

    <?php include_once('head-attrib.php'); ?>

</head>

<body>

    <div class="content">

        <section>

            <img src="source/img/logo.png" class="logo logo-small logo-search">

            <p class="copy">Para consultar, ingresa un numero de cedula.</p>

            <div class="card card-searchcard animated" >

                <form id="searchBar" method="get">

                    <input type="search" class="field" name="searchBox" id="searchBox" placeholder="Ingresa una identificacion aqui" min="11111111" max="9999999999">

                    <button class="btn btn-main btn-bar right"><span class="text">CONSULTAR</span><i class="material-icons md-36 md-light">search</i></button>

                </form>

            </div>

            <br>

            <?php print($message) ?>

            <div style="margin-bottom:85px"> <!-- Prevents cropped results -->

            <?php print($info) ?>

                <div class="scroller-box"> 
                    <!-- Search Trasition-->
                    <script type="text/javascript">

                        $(function() {

                            var box = $('.card-searchcard');
                            var logo = $('.logo-search');
                            var copy = $('.copy');
                            var button = $('#searchBar button');
                            button.one('click', function(){

                                box.toggleClass('active');
                                logo.toggleClass('active');
                                copy.toggleClass('active');

                                var dataString = document.getElementById("searchBox").value; // Post data to send
                                console.log("Data Collected Susccessfully");
                                return false; 

                                    $.ajax({
                                        type: "post",
                                        url: "scripts/search.php",
                                        data: dataString,
                                        success: function() {
                                            alert("Hi gorgeous!");                    
                                        }
                                    });

                             });

                        });

                    </script>
                </div>



                </div>

            </div>

            <?php include_once('navbar.php'); ?>

        </section>

    </div>

</body>

PHP PHP

<?php 

        include_once("scripts/global.php");

        // Collecting input variables
        $entry = '';
        $message = '';
        $search = $_POST['searchBox'];

        if(isset($search)) {

            // Validation
            if (empty($search)) {

                    $message = "Necesito un numero para consultar"; //Empty field message

                }

            else{ //MySQL DB search query

                $searchquery = mysql_query("SELECT * FROM submissions WHERE id='$search'") or die("Could not check ID, I'm search");
                $count = mysql_num_rows($searchquery);

                if ($count == 0) {

                    $no_results = array( //Funny Error Messages goes here

                        '<span>Ups</span><br>Esta persona aun no ha sido calificada<br>Puedes añadir una calificacion si lo deseas',

                        '<span>Hay Caramba</span><br>nadie sabe acerca de esta persona<br> Tu sabes? Genial, añade una calificacion.',

                        );

                    $message = $no_results[array_rand($no_results)];

                }

                else{

                    while ($row = mysql_fetch_array($searchquery)) {

                        $name = $row['name'];
                        $id = $row['id'];
                        $amount = $row['amount'];
                        $submitter = $row['submitter'];
                        $rating = $row['rating'];

                                //Thumbs up or thumbs down icon

                                if ($rating == 'good') {
                                    $ratingIcon = '<i class="material-icons">thumb_up</i>';
                                }

                                else{
                                    $ratingIcon= '<i class="material-icons">thumb_down</i>';
                                }

                        $entry .= ( //Display individual entries (Can repeat)

                       "<div class='entry animated slideInEntry'>

                            <div>
                                <span>$submitter</span>
                                <span>$amount</span>
                            </div>

                            <div>$ratingIcon</div>

                        </div>
                        ");

                    }

                    $info .=( //Display Person data (Not reapeat)

                        "<div class='card card-infocard animated slideInEntry'>
                                <label for='id'>CEDULA</label>
                                <span name='id'>$id</span>

                                <span name='name'>$name</span>
                                <button class='btn btn-fab btn-main'></span><i class='material-icons md-36 md-light'>add_circle_outline</i></button>
                        </div>
                        ");

                }

            }

        }

    ?>

The CSS in case you want it 如果需要CSS

/* Reset CSS & Global Attributes */

    *{
        box-sizing: border-box;
        font-family: 'Raleway', sans-serif;
        font-weight: 600;
        letter-spacing: 1px;
        margin: 0;
        padding: 0;
        border: 0;
    }


    /*Hiiden Scrollbar*/
    ::-webkit-scrollbar{
        display: none;
    }

    a{
        text-decoration: none;
        color: inherit;
    }

    button, input{
        margin: 0;
        border: none;
    }


    /* Rules for using icons as black on a light background. */
    .material-icons.md-dark{
        color: rgba(0, 0, 0, 0.54);
    }
    .material-icons.md-dark.md-inactive{
        color: rgba(0, 0, 0, 0.26);
    }

    /* Rules for using icons as white on a dark background. */
    .material-icons.md-light{
        color: rgba(255, 255, 255, 1);
    }
    .material-icons.md-light.md-inactive{
        color: rgba(255, 255, 255, 0.3);
    }

    .left{
        float: left;
    }

    .right{
        float: right;
    }


    /*Small Devices*/


    @media all and (max-width: 699px){
        /* Rules for sizing the icon. */
        .material-icons.md-18{
            font-size: 18px;
        }
        .material-icons.md-24{
            font-size: 24px;
        }
        .material-icons.md-36{
            font-size: 36px;
        }
        .material-icons.md-48{
            font-size: 48px;
        }

        /* Logo Attributes -  Logo Attributes - Logo Attributes - Logo Attributes - Logo Attributes - Logo Attributes - Logo Attributes - Logo Attributes */

        .logo-big{
            width: 102px;
            margin: 70px auto;
        }

                    .logo-small{
                        width: 66px;
                    }

                    .logo-search{
                        margin: 55px 0 30px ;
                    }

        /* Button Attributes - Button Attributes - Button Attributes - Button Attributes - Button Attributes - Button Attributes - Button Attributes */

        .btn{
            color: #FFFFFF;
            font-weight: 600;
            font-size: 15px;
        }

                    .btn-main{
                        background-color: #80CCFF;
                    }

                    .btn-secondary{
                        background-color: #4C4C4C;
                    }

                    .btn-card{
                        border-radius: 0  0 3px 3px;
                        width: 100%;
                        height: 60px;
                        line-height: 60px;
                    }

                    .btn-fab{
                        width: 60px;
                        height: 60px;
                        border-radius: 100%;
                        box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.12);
                        line-height: 10px;
                    }

                                .card-infocard > .btn-fab{
                                    position: absolute;
                                    bottom: 0;
                                    right: 0;
                                    z-index: 9999;
                                    margin: 0 20px -20px 0;                                                         
                                }


                    .btn-bar{
                        height: 55.5px;
                        width: 56px;
                        border-radius: 0 3px 3px 0;
                    }

                                .btn-bar > .text{
                                    display: none;
                                }   

        /* Card Attributes -  Card Attributes - Card Attributes - Card Attributes - Card Attributes - Card Attributes - Card Attributes - Card Attributes */

        .card{
            background-color: #FFFFFF;
            color: #4C4C4C;
            box-shadow: 0 10px 20px rgba(0,0,0,0.19), 0 6px 6px rgba(0,0,0,0.12);
            text-align: left;
            border-radius: 3px;
        }

                    .card-small{
                        max-width: 350px;
                        margin: 0 auto;
                    }

                    .card-searchcard{
                        width: 315px;
                        height: 56px;
                        margin: 35px auto 20px;
                        padding: 0 0 0 20px !important;
                    }

                    .card-infocard{
                        max-width: 315px; 
                        padding: 23px 5%;                   
                        margin: 0 auto 35px;
                    }

                                .card-infocard > label{
                                    display: inline;
                                }

                                .card-infocard > span:nth-child(3){
                                    font-size: 16px;
                                    font-weight: bolder;
                                    display: block;
                                    margin: 12px 0 0;
                                }

        .entry{
            background-color: rgba(0,0,0,0.3);
            max-width: 300px;
            padding: 10px 0;
            margin: 20px auto;
            border-radius: 5px;     
        }

                    .entry > div{
                        display: inline-block;
                    }

                    .entry > div:nth-child(1){
                        margin: 0 55px 0 20px;
                    }

                    .entry > div:nth-child(2){
                        margin: 0 20px 0 55px;
                    }

                    .entry > div > span{
                        display: block;
                        margin: 5px 0;
                        text-align: left;
                    }

                    .entry > div > span:nth-child(1){
                        font-weight: bolder;
                        font-size: 16px;
                    }

                    .entry > div > i{
                        vertical-align: baseline;
                        font-size: 30px;
                    }

        /* Input Attributes -  Input Attributes - Input Attributes - Input Attributes - Input Attributes - Input Attributes - Input Attributes - Input Attributes */

        label{
            font-size: 12px;
            font-weight: bold;
            text-transform: uppercase;
            color: #393950;
            display: block;
        }

        /* No blue outline on inputs */
        textarea, input{
            outline: none;
        }

        input[type=mail], input[type=password]{
            padding: 15px 0 10px 0;
            margin-bottom: 30px;
            font-size: 14px;
            color: #4C4C4C;
            font-family: 'Raleway';
            width: 100%;
            font-weight: 600;
            border: solid rgba(0,0,0,0.18);
            border-width: 0 0 2px 0;
            display: block;
        }

        input[type=search]{
            height: 56px;
            width: 70%;
            font-size: 14px;
        }

                    /* Placeholder Styling */

                    ::-webkit-input-placeholder{
                        color: #808080;
                        font-family: 'Raleway';
                    }

                    :-moz-placeholder{
                        /* Firefox 18- */
                        color: #808080;
                        font-family: 'Raleway';
                    }

                    ::-moz-placeholder{
                        /* Firefox 19+ */
                        color: #808080;
                        font-family: 'Raleway';
                    }

                    :-ms-input-placeholder{
                        color: #808080;
                        font-family: 'Raleway';
                    }

                    /* No arrows on number input*/
                    input[type=number]::-webkit-inner-spin-button, input[type=number]::-webkit-outer-spin-button{
                        -webkit-appearance: none;
                           -moz-appearance: none;
                                appearance: none;
                        margin: 0;
                    }

                    /*No color autofill*/
                    input:-webkit-autofill{
                        background-color: rgba(255,255,255,1); !important;
                        background-color: #FFFFFF !important;
                    }

        /* Other Attributes -  Other Attributes - Other Attributes - Other Attributes - Other Attributes - Other Attributes - Other Attributes - Other Attributes */

        body{
            font-size: 14px;
            background-color: #0C77F8;
            text-align: center;
            font-size: 14px;
            color: #FFFFFF;
        }

        .remora{
            margin: 25px 0;
            font-size: 12px;
            color: #FFFFFF;
            font-weight: 400;
        }

        .navbar{
            width: 100%;
            font-size: 12px;
            color: #FFFFFF;
            background-color: #0C77F8;
            position: fixed;
            bottom: 0;
            left: 0;
            z-index: 9999;
        }

                    .navbar-icon{
                        margin: 15px 50px;
                        display: inline-table;
                    }

                    .navbar-icon > i{
                        margin-bottom: 5px;
                    }

        .wrapper{
            padding: 45px 12% 0;
        }

        span.link > a{
            border-bottom: solid 2px #80CCFF;
            font-weight: 600;
        }

        .scroller-box{
        }

        /* End of small devices styling - End of small devices styling - End of small devices styling - End of small devices styling - End of small devices styling*/
    }

And the animation code, again, in case you want it. 再加上动画代码,以备不时之需。

.animated{
      -webkit-animation-fill-mode: forwards;
              animation-fill-mode: forwards;
    }

    /* Searchbar Animation -Searchbar Animation -Searchbar Animation -Searchbar Animation -Searchbar Animation */

    .logo-search.active{
      -webkit-animation-name: logoSearchActive;
              animation-name: logoSearchActive;
      -webkit-animation-duration: 1s;
              animation-duration: 1s;
      -webkit-animation-timing-function: ease-out;
              animation-timing-function: ease-out;
      -webkit-transform: translateY(-300px);
              transform: translateY(-300px);
    }

    .copy.active{
      opacity: 0;
      transition: 0.5s ease-in;
    }

    .card-searchcard.active{
      -webkit-animation-name: searchcardActive;
              animation-name: searchcardActive;
      z-index: 9999;  
      -webkit-animation-duration: 1.2s;
              animation-duration: 1.2s;
      transition: 0.8s ease-in;  
      -webkit-animation-timing-function: ease-in-out;
              animation-timing-function: ease-in-out;
    }

    @-webkit-keyframes searchcardActive{
      0%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

      20%{
        -webkit-transform: translateY(20px);
                transform: translateY(20px);
      }

      60%{
        width: 315px;
      }

      100%{
        -webkit-transform: translateY(-221px);
                transform: translateY(-221px);
        border-radius: 0px;
        width: 100vw;
      }
    }

    @keyframes searchcardActive{
      0%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

      20%{
        -webkit-transform: translateY(20px);
                transform: translateY(20px);
      }

      60%{
        width: 315px;
      }

      100%{
        -webkit-transform: translateY(-221px);
                transform: translateY(-221px);
        border-radius: 0px;
        width: 100vw;
      }
    }

    @-webkit-keyframes logoSearchActive{
      0%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

      50%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

      100%{
        -webkit-transform: translateY(-300px);
                transform: translateY(-300px);
        visibility: hidden;
      }
    }

    @keyframes logoSearchActive{
      0%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

       50%{
        -webkit-transform: translateY(0);
                transform: translateY(0);
      }

      100%{
        -webkit-transform: translateY(-300px);
                transform: translateY(-300px);
        visibility: hidden;
      }
    }

I think that all you need is to fix the PHP script and fix the response from your Ajax call. 我认为您所需要的只是修复PHP脚本并修复来自Ajax调用的响应。

First of all, you PHP need and 'echo' statement to print some output. 首先,您的PHP需要使用'echo'语句来打印一些输出。 The output will be passed to the response from the ajax call, than JS have some material to work on. 输出将传递给ajax调用的响应,而不是JS需要处理的材料。

An example: 一个例子:

<?php echo $info; ?>

After fix the php, try to edit this JS part: 修复php后,尝试编辑此JS部分:

$.ajax({
    type: "post",
    url: "scripts/search.php",
    data: dataString,
    success: function(data) {
       console.log(data);                  
    }
});

If you PHP script return to you an HTML markup or print HTML, you can use the .append() or .prepend() functions from jQuery to append the data on the body like: 如果您的PHP脚本返回HTML标记或打印HTML,则可以使用jQuery中的.append()或.prepend()函数将数据追加到正文中,例如:

$.ajax({
    type: "post",
    url: "scripts/search.php",
    data: dataString,
    success: function(data) {
       $('body').append(data);                 
    }
});

To show some CSS animation, I think you need to use .addClass() to the element you want to animate. 为了显示一些CSS动画,我认为您需要对要设置动画的元素使用.addClass()。

Problem is your the post data that you are sending. 问题是您发送的帖子数据。 Change 更改

var dataString = document.getElementById("searchBox").value;

To

var dataString = $("#searchbar").serialize();

Your search.php is expecting a value in $_POST['searchBox'] 您的search.php需要$ _POST ['searchBox']中的值

if(isset($search)){...

but never finds it so its skips that whole process of the search 但从未找到它,因此它跳过了整个搜索过程

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

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