私は単純なAjaxワードプレスプラグインを作成することを練習しています。私はプラグインを作成するためにwordressのajaxドキュメントといくつかのチュートリアルを参照しました。どのように私はphpファイルから結果を得るために値を渡すことができます。私は通常のPHPで作成したのと同じコードがうまく動作します。どうすればこれを解決できますか。これが私が作成したコードです。
index.php
<?php
/*
Plugin Name: Ajax Serach
*/
function my_assets() {
wp_enqueue_style( 'pubmed-style', plugin_dir_url( __FILE__ ).'css/pubmed-style.css' );
wp_enqueue_script( 'pubmed-script', plugin_dir_url( __FILE__ ).'js/pubmed-script.js', array('jquery'), true );
wp_localize_script( pubmed-script, litsearch, array( 'ajaxurl' => admin_url( 'admin-ajax.php' )));
}
add_action( 'wp_enqueue_scripts', 'my_assets' );
?>
<?php
function pubget(){
?>
<input type="text" name="" value="" id="sterm"/>
<input type="button" name="" value="Search term" id="pub_search"/>
<div id="container">olddata</div>
<?php
}
add_shortcode('pubajax', 'pubget');
?>
Test.php
<?php
class Testclass{
function infotext(){
$txt = 'This is a ajax response text';
}
}
?>
Pub.php
<?php
function litsearch(){
$newterm = $_GET['nwterm'];
$newtest = new Testclass();
if($newterm == $_GET['nwterm']){
include('test.php');
$newtest = new Testclass();
$newtest->infotext();
}
die();
}
add_action('wp_ajax_litsearch', 'litsearch');
add_action('wp_ajax_nopriv_litsearch', 'litsearch');
?>
mainjquery.js
jQuery( document ).ready(function(){
//alert("Jquery Loaded");
jQuery("#pub_search").click(function(){
alert("You clicked");
event.preventDefault();
var term= $("#sterm").val();
console.log('your term send: '+term);
var data = {'nwterm': term }
$.get(litsearch.ajaxurl, data, function(data){
$("#container").html(data);
});
});
});
Ajax呼び出しを行うときには、wp ajaxアクションの名前をデータに含める必要があります。
私はajaxのURLが正しいと思います。
jQuery( document ).ready(function(){
//alert("Jquery Loaded");
jQuery("#pub_search").click(function(){
alert("You clicked");
event.preventDefault();
var term= $("#sterm").val();
console.log('your term send: '+term);
var data = {'nwterm': term, 'action': 'litsearch'}
$.get(litsearch.ajaxurl, data, function(data){
$("#container").html(data.response);
});
});
});
また、あなたはあなたのHTMLコードに応答を入れたいので、あなたはサーバから何かを送り返さなければなりません。
Test.php
<?php
class Testclass{
function infotext(){
$txt = 'This is a ajax response text';
return $txt;
}
}
?>
Pub.php
<?php
function litsearch(){
$newterm = $_GET['nwterm'];
$newtest = new Testclass();
$data = array();
if($newterm == $_GET['nwterm']){
include('test.php');
$newtest = new Testclass();
$data['response'] = $newtest->infotext();
}
wp_send_json( $data );
}
add_action('wp_ajax_litsearch', 'litsearch');
add_action('wp_ajax_nopriv_litsearch', 'litsearch');
?>