web-dev-qa-db-de.com

Einfacher Ajax-Aufruf funktioniert im WordPress-Plugin nicht

Ich übe mich darin, ein einfaches Ajax-WordPress-Plugin zu erstellen. Ich habe auf die Dokumentation von Wordress Ajax und einige Tutorials verwiesen, um ein Plugin zu erstellen. Wie kann ich die Werte übergeben, um das Ergebnis aus der PHP-Datei zu erhalten? Der gleiche Code, den ich in normalem PHP erstellt habe, funktioniert gut. Wie kann ich das lösen? Hier sind die Codes, die ich erstellt habe.

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

Sie müssen den Namen Ihrer wp-Ajax-Aktion in Ihre Daten einfügen, wenn Sie den Ajax-Aufruf ausführen.

Ich gehe davon aus, dass die Ajax-URL korrekt ist.

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);
          });
        });
});

Auch weil Sie eine Antwort in Ihren HTML-Code einfügen möchten, müssen Sie etwas vom Server zurücksenden.

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