web-dev-qa-db-ja.com

Function.phpからajaxを使う

私はAjax呼び出しをしようとしていると私はエラーを得ています:

TypeError: $ is undefined

これは私のfunction.phpファイルです:

<?php

// Add custom Theme Functions here
// 

function gear_guide_product_view( $atts ) {
    $a = shortcode_atts( array(
        'id' => '0'
    ), $atts );
    wp_register_script( 'load_product_info' , '/wp-content/themes/theme-child/js/test.js' , array( 'jquery' ) );
    wp_enqueue_script( 'load_product_info' );
    wp_localize_script( 'load_product_info' , 'para' , $atts);
}

add_shortcode( 'fsg' , 'gear_guide_product_view' );

これがajaxです。

function load_product_info() {
    console.log(para.id);
    $.ajax({
        type: 'POST',
        url: '/wp-content/themes/flatsome-child/js/controllers/get_product_info.php',
        data: para,
        dataType: 'json',
        success: function (data) {
            console.log(data);
        }
    });
}
load_product_info();

私はjqueryの使用を宣言しました、そして私がグーグルで読んだものからそれが私がajax呼び出しをするために必要なすべてです。

それ以上必要な情報があれば教えてください。それを提供するために最善を尽くします。

ありがとうございます。

1
Omer

Miloがすでにコメントで述べたように、WordPressではjQueryはnoConflictモードです。このように他のJSライブラリも$文字を使うことができます...

これを解決する1つの方法は、JSファイルの至る所でjQueryを使用することです。

もう1つは、ブロックを作成し、その中に$ variableを定義することです。

jQuery(function ($) {

    $.ajax(...); // here you can use $ since it is already defined and won’t cause conflicts

});
2

あなたはajaxエンドポイントに非常に特定のURLを使っています。テーマを変更すると、機能が壊れます。 WP codexがどのようにしてajaxを適切に呼び出すようにし、wp_ajaxアクションにフックするかを確認してください。

0