私は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呼び出しをするために必要なすべてです。
それ以上必要な情報があれば教えてください。それを提供するために最善を尽くします。
ありがとうございます。
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
});
あなたはajaxエンドポイントに非常に特定のURLを使っています。テーマを変更すると、機能が壊れます。 WP codexがどのようにしてajaxを適切に呼び出すようにし、wp_ajaxアクションにフックするかを確認してください。