web-dev-qa-db-ja.com

単純なAjax呼び出しがワードプレスプラグインで機能しない

私は単純な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);
          });
        });
});
1
muraliniceguy97

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');
 ?>
1
Laxmana