JS在“返回数组('html'=> $ response);”中不起作用

时间:2019-02-20 07:55:54

标签: javascript php wordpress return response

我有一个PHP文件,该文件基于WP_Query输出产品。

到目前为止一切正常!

但是现在我也想在输出中输出javascript 。而这是无法识别/加载的...对我来说,似乎javascript无法识别为javascript。如果我插入警报,则将被忽略。

...
if ( $posts_gf->have_posts() ) :
    while ( $posts_gf->have_posts() ) : $posts_gf->the_post();
        $response .= '
        <script type="text/javascript">
            alert("Hello! I am an alert box!");
        </script>
        <div class="item col-md-4">
            Produkt
        </div>
        ';
    endwhile;
...

我想从functions.php中包含的js加载轮播。 如果我将轮播的相同代码直接粘贴到模板部分文件“ content-glasfaser.php”中,则可以正常工作。

the output

这是轮播应该加载的文件摘录(所有js / css文件都已加载/存在于页眉和页脚中):

    $products = self::$productDefinitions[$result['Standorttyp']];

    $posts_gf = new WP_Query(array(
        'post_type' => 'tarife',
        'posts_per_page' => 6,
        'post_status' => 'publish',
        'post__in' => $products,
        'orderby' => 'title',
        'order' => 'ASC',
        'tax_query' => array(
            array(
                'taxonomy' => 'tarif_kategorie',
                'field' => 'slug',
                'terms' => 'glasfaser',
            ),
        ),
    ));



    $street = utf8_encode($result['Strasse']);
    $houseNo = $result['Hausnummer'];
    $postCode = $result['Plz'];
    $city = $result['Ort'];


    $response = '
    <h3>inside return</h3>
    <section class="regular slider">';

    // Zeige die Glasfaser-Tarife

    if ( $posts_gf->have_posts() ) :
        while ( $posts_gf->have_posts() ) : $posts_gf->the_post();
            $response .= '
                <div class="item col-md-4">
                    Produkt
                </div>
            ';
        endwhile;
        wp_reset_postdata();
    else:
        $response .= '';

    endif;  


    return array('html' => $response);

    }
}

编辑: 对于轮播,我已经在我的functions.php(wordpress)中插入了3个文件

wp_enqueue_style( 'xxx-slider', get_stylesheet_directory_uri() . '/css/slick.css', array(), '20170925' );
wp_enqueue_style( 'xxx-slidertheme', get_stylesheet_directory_uri() . '/css/slick-theme.css', array(), '20170925' );  
... 
wp_enqueue_script( 'xxx-sliderjs', get_template_directory_uri() . '/js/slick.min.js', array(), '20190218', true );
  • 所有这些文件都加载到页眉/页脚中。
  • 轮播应该在已经加载的php中运行。
  • 该脚本来自http://kenwheeler.github.io/slick/,并且已在“已加载”文件中使用。但不在ajax(?)内部。

2 个答案:

答案 0 :(得分:1)

我找到了解决方法:

How do I execute a javascript after Ajax load?

我已将其插入我的js

$( document ).ajaxComplete(function( event,request, settings ) {
  // carouselcode
});

答案 1 :(得分:0)

如果这是您的全部代码,似乎您是将php的回复注入到已加载的html页面中了?

如果是这种情况,除非您明确调用它,否则JS将不会执行。 我将通过重新格式化JS来解决这个问题,以便您只剩下一个脚本,并在加载html后在该脚本中调用一个函数。

  select * from table where tablename like '%admin%'

然后,您可以在加载后调用此代码:

$response = '
<script> function initialize { alert("Hello! I am an alert box!"); } </script>
<h3>inside return</h3>
<section class="regular slider">';

// Zeige die Glasfaser-Tarife

if ( $posts_gf->have_posts() ) :