1

PHP のことで立ち往生しています。それが単純なことはわかっていますが、jquery または php のどちらを使用しても正しい方法がわかりません。

フォームを送信するときに、いくつかのフィールドの結果を結果に表示する連絡先フォームがあります。

あなたの名前を入力していただきありがとうございます。何とか何とか何とか

これは単純なphp行で達成可能ですか、それともjqueryを介して呼び出す必要がありますか?

ありがとう、PHPは初めてなので、まだ少し混乱しています

   <?php
    define('is_freetrial-celebrity', 1);
    include_once('includes/header.inc.php');
    ?>
    <div role="main" id="main">
        <article id="mainFreetrial" class="greyBlock twoColumnsLayout">
            <header>
                <h1>Get Started</h1>
            </header>
            <div>
                <form method="get" action="/forms_validation/freetrial.php" class="trialForm ajaxForm">
                    <div class="column">

                        <p>
                            <label for="firstNameTrial">First name<sup class="red">*</sup></label><input type="text" id="firstNameTrial" name="firstNameTrial" value="" required/>
                        </p>
                        <p>
                            <label for="lastNameTrial">Last name<sup class="red">*</sup></label><input type="text" id="lastNameTrial" name="lastNameTrial" value="" required/>
                        </p>
                        <p>
                            <label for="ageTrial">Age</label><input type="text" id="ageTrial" name="ageTrial" value=""/>
                        </p>

                        <p>
                            <label for="celebrityTrial" style="display: block; width: auto; margin-bottom: 5px;">Name the celebrity you would most like to meet, and why?<sup class="red">*</sup></label>
                            <textarea id="celebrityTrial" name="celebrityWhyTrial" style="width: 430px; height: 3em;" required></textarea>
                        </p>

                        <p class="ajaxFormBeforeValid">
                            <input type="submit" value="Submit now" class="redButton"/><span class="ajaxFormWait"></span><span class="ajaxFormError error"></span>
                        </p>
                        <div class="ajaxFormValid">
                            <p>
                                Thank you! Your local consultant will contact you soon. 'Like' us while you wait for all the latest VIP offers and promotions!
                            </p>
                        </div>
                        <p>
                            <small>
                                <sup class="red">*</sup>These are mandatory fields.
                            </small>

                        </p>

                    </div>
                </form>
            </div>
        </article>
    </div>
    <?php include_once('includes/footer.inc.php'); ?>

jquery部分はこちら

/*************************
plugin to manage ajax forms
*************************/
(function( $ ){

    var methods = {
        init : function( options ) {

            return this.each(function(){

                var $this = $(this),
                    data = $this.data('ajaxForm'),
                    ajaxForm = $('<div />', {
                        text : $this.attr('title')
                    });

                // If the plugin hasn't been initialized yet
                if ( ! data ) {

                    $(this).data('ajaxForm', {
                        target : $this,
                        ajaxForm : ajaxForm
                    });

                    //get the spinner, the valid box and the error box
                    var mySpinner = $this.find('.ajaxFormWait');
                    var myValid = $this.find('.ajaxFormValid');
                    var myError = $this.find('.ajaxFormError');
                    var myBeforeValid = $this.find('.ajaxFormBeforeValid');

                    myError.hide();
                    mySpinner.hide();

                    //add an event to send the form via AJAX
                    $this.submit(function(){
                        // get all the inputs into an array.
                        var $inputs = $this.find(':input:not([type="submit"], [type="button"])');

                        // not sure if you wanted this, but I thought I'd add it.
                        // get an associative array of just the values.
                        var values = {};
                        $inputs.each(function() {
                            if (this.type == "radio" || this.type == "checkbox"){
                                if($(this).is(':checked')){
                                    if(typeof(values[this.name]) === 'undefined'){
                                        values[this.name] = $(this).val();
                                    }else{
                                        values[this.name] += ', '+($(this).val());
                                    }
                                }
                            } else
                                values[this.name] = $(this).val();
                        });

                        function defineTheInvalidsFields(fieldsList){
                            for(var i in fieldsList){
                                if(fieldsList[i] == 'closestStudio'){
                                    $this.find('[name="'+fieldsList[i]+'"]').parent().addClass('invalid');
                                }else{
                                    $this.find('[name="'+fieldsList[i]+'"]').addClass('invalid');
                                }
                            }
                        }


                        //send an AJAX request
                        $.ajax({
                            url: $this.attr('action'),
                            dataType: 'json',
                            data: values,
                            beforeSend: function(){
                                mySpinner.show();
                            },
                            success: function(result){
                                mySpinner.hide();
                                $this.find('.invalid').removeClass('invalid');

                                //error management
                                if(typeof(result.valid) === 'undefined'){

                                    if(result.multipleSend){ //if multiple send
                                        myError.html('Your request is already sent.');
                                    }else if(result.required){ //if fields are required
                                        defineTheInvalidsFields(result.required);
                                        myError.html('The fields in red are required.');
                                    }else if(result.format){ //if the forma is incorrect
                                        defineTheInvalidsFields(result.format);
                                        myError.html('The fields in red have invalid content.');
                                    }else if(result.loginInvalid){
                                        myError.html(result.loginInvalid);
                                    }else{
                                        myError.html('An unknown error occured.');
                                    }
                                    myValid.slideUp(300);
                                    myError.slideDown(300);
                                }else if(typeof(result.loginUrl) !== 'undefined'){
                                    window.location.href = result.loginUrl;
                                }else{
                                    if(result.valid || result.valid == 'true'){
                                        if($('#inputFreetrialFitnessFirst').length){
                                            myBeforeValid.slideUp(300);
                                            myError.slideUp(300);
                                            myValid.slideDown(300);
                                        }else{
                                            window.location = '/free-trial-thank-you/';
                                        }
                                    }else{
                                        myError.html('There was an error sending your details. Please try again.');
                                        myValid.slideUp(300);
                                        myError.slideDown(300);
                                    }
                                }
                            }
                        });

                        return false;
                    });

                    //special case for the heardAbout
                    $('#heardAbout').change(function(){
                        if($(this).find('option:selected').attr('value') == 'Other'){
                            $('#otherHeardAbout').slideDown(300);
                        }else{
                            $('#otherHeardAbout').slideUp(300);
                        }
                    });
                }
            });
        },
        destroy : function(){
            return this.each(function(){
                var $this = $(this),
                    data = $this.data('ajaxForm');

                // Namespacing FTW
                $(window).unbind('.ajaxForm');
                data.ajaxForm.remove();
                $this.removeData('ajaxForm');
            })
        }
    };

    $.fn.ajaxForm = function( method ) {

        // Method calling logic
        if ( methods[method] ) {
            return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ));
        } else if ( typeof method === 'object' || ! method ) {
            return methods.init.apply( this, arguments );
        } else {
            $.error( 'Method ' +  method + ' does not exist on jQuery.ajaxForm' );
        }    

    };

})( jQuery );

フォームは他のページに送信されます。特定の div をターゲットにして、カスタム メッセージに名前を追加する方法はありますか。

if(result.valid || result.valid == 'true'){
     if($('#inputFreetrialFitnessFirst').length){
          myBeforeValid.slideUp(300);
          myError.slideUp(300);
          myValid.slideDown(300);
     }else{
          window.location = '/free-trial-thank-you/';
       }
}else{
    myError.html('There was an error sending your details. Please try again.');
    myValid.slideUp(300);
    myError.slideDown(300);
}
4

2 に答える 2

0

私が考えることができる 1 つの方法は、セッションを使用して情報を保存することです。

  1. freetrial.php で、次のようにフォーム情報をセッションに保存します。

    session_start();
    $_SESSION['firtNameTrial'] = $_GET['firstNameTrial'];
    
  2. ajax が成功したら、javascript windows.location.replace を使用してページをサンキュー ページにリダイレクトします。

      // HTTP リダイレクトと同様の動作
      window.location.replace("http://yourwebpageaddress.com/thankyou.php");
    
  3. ありがとうページでセッションを取得します。わからない場合は、次の例を参照してください。セッションの例については、ここをクリックしてください。

于 2013-08-09T08:02:24.817 に答える
0

ajax 呼び出しを介して特定の要素 div を取得したい場合は、次のようにすることができます。

$.ajax({
url: 'page.html',
success: function(data) {
    item=$(data).filter('#specific_element');
    $(selector).html(item); 
 }
});

を使用して他のページにリダイレクトする場合

window.location = '/free-trial-thank-you/';

次に、別のページにデータを表示します 次のような必要なパラメーターを渡す必要があります

 window.location = '/free-trial-thank-you/page.php?name1=Daniel&name2=Pablo;

たとえば、別のサイトで_GETまたは_POSTを使用してパラメーターを表示します echo $_GET['name1'] or echo $_POST['name1']。AjaxリクエストでPSOTメソッドを使用する場合

于 2013-08-09T08:03:15.963 に答える