首页 > 解决方案 > Ajax 在新的 HTML 内容代码之后总是返回“1”

问题描述

单击按钮后,我在更改表单内容时实现了我的 Java 脚本。一切正常,但每次我用新的 HTML 替换旧的 HTML ...在内容显示“1”号之后。

我的 Javascript :

$(document).on('click','#customButton', function (evt) {

    evt.preventDefault();

    var requestArray = $(".form_step").val();

    $.ajax({
        url: ajaxurl,
        type: "POST",
        data: {"action": "testNewsletter", "form_step":requestArray},
        dataType: "",
        success:function(data) {

            $(".current").empty();
            $(".current").html(data);
        }
    });
});

自定义函数functions.php

function testNewsletter() {

    $FormId ='';

    If(isset($_POST['form_step'])){
        $FormId = $_POST['form_step'];
    }

    if($FormId == 1){
        echo include ('pages/forms/form-two.php');
        //echo 'AHOJ';
    }

    else if($FormId == 2){
        echo include ('pages/forms/form-three.php'); 
    }

    else {
        echo include ('pages/forms/form-four.php');
    }

    wp_die();

}

我用新的 HTML 替换了 HTML:

<form  method="post" class="newsletter">
    <div class="current">
        <div class="fce-newsletter-form">
            <div class="row justify-content-center">
                <div class="col-md-7 text-center">
                    <h2 class="mb-half"><?php the_sub_field('newsletter_title')?></h2>
                    <p class="mb-2 lead">Mit unserem Newsletter erhalten Sie monatlich Informationen rund um das Urlaubsland Österreich und eine Auswahl exklusiver Angebote und Gutscheine!</p>
                </div>
            </div>

            <div class="row justify-content-center">
                <div class="col-md-6">

                        <div class="testFormChange">
                            <div class="form-row">
                                <div class="col-8">
                                    <input type="email" class="form-control" id="custom-input-newsletter" placeholder="Ihre E-Mail Adresse *" required="required">
                                </div>
                                <div class="col-4">
                                    <input type="button" class="fce-newsletter-form-button btn btn-block btn-primary" id="customButton" value="Weiter">
                                    <input type="hidden" value="step1" name="step">
                                </div>
                            </div>
                        </div>

                    <p class="fce-newsletter-form-note">mit * gekennzeichnete Felder bitte ausfüllen.</p>
                    <p class="fce-newsletter-form-error-message"></p>
                </div>
            </div>
            <input type="hidden" name="form_step" class="form_step" value="1">
        </div>
    </div>
</form>

每个新的 HTML 数据都具有与第一个 HTML 相似的内容,例如:

<div class="fce-newsletter-form">
    <div class="row justify-content-center">
        <div class="col-md-7 text-center">
            <h2 class="mb-half"><?php the_sub_field('form_four_title')?></h2>
            <p class="mb-2 lead">Vielen Dank für Ihre Anmedung zu unserem Newsletter.
                Sie erhalten in Kürze eine E-Mail mit einem Bestätigungslink.</p>
        </div>
    </div>

    <div class="row d-flex justify-content-center">
                        <a href="<?php the_permalink()?>" class="link-read-more"> <?php
                            include get_stylesheet_directory() . '/img/svg/icon_arrow.svg';
                            ?>
                            Zum Newsletterarchiv
                        </a>
    </div>
</div>

当我在回显中返回字符串时...没有显示数字,但是当我返回文件夹时...每次都会出现数字。请问有人给我一些建议吗?

标签: javascriptphphtmlajaxwordpress

解决方案


include如果包含的文件存在,则自动进入 html 模式并返回boolean指示成功。由于您的文件主要是标记,因此它直接输出。因此,echo从 中删除include statement以解决此问题。

参考(跳到警告之后)


推荐阅读