2017-05-02 7 views
0

Ich versuche, Jquery Autocomplete mit Wordpress, aber ich verstehe nicht, wo mein Fehler 500 in meinem Code:JQuery Autocomplete zurückkehren Interner Serverfehler

Ich denke, die meinen Code in php.

$('#search_type_fiche').autocomplete({ 
     source: function(search, response) { 
      $.ajax({ 
       type: 'POST', 
       dataType: 'json', 
       url: MyAjax.ajaxurl, 
       data: 'action='+MyAjax.action+'&search='+search.term, 
       success: function(data) { 
        response($.map(data, function(item) { 
         return { 
          label: item, 
          value: item 
         } 
       })); 
        //$("p#resultat").html(response(data)); 
       }, 
       error : function(XMLHttpRequest, textStatus, errorThrown) { 
        $("div#ajax-response").removeClass().addClass('error').html('error'); 
       } 
      }); 
      console.log(data); 
     } 
    }); 

Rückruf php:

public $search; 

    public function __construct() 
    { 
     global $wpdb; 
     $this->wpdb = $wpdb; 
    } 

public function SearchTypeFiche($search){ 
     $this->search = $search;  

     $datas = $wpdb->get_results(
      $wpdb->prepare(
       "SELECT slug,id FROM {$this->wpdb->prefix}fiches_type WHERE slug LIKE %s", 
       $this->esc_like(stripslashes($this->search)).'%' 
      ) 
     ); 

     $results = array(); 
     foreach($datas as $key){ 
      $arr   = array(); 
      $arr['label'] = addslashes($key->slug); 
      $arr['value'] = $key->id; 
      $results[] = $arr; 
     }; 
     return json_encode($results);  
    } 

    $data_search = $_POST['search']; 
    parent::SearchTypeFiche($data_search); 

Thx für die Hilfe!

ps: i in Stackoverflow gesucht, aber keine Beiträge mein Problem lösen ..

+0

Wie und wo 'MyAjax' definiert werden? – Pyromonk

+0

Wordpress ajax: var MeineAjax = {"ajaxurl": "https: \/\/******** \/wp-admin \ /admin-ajax.php", "aktion": "search_type_fiche", " nonce ":" 1e65627d9d "}; – Unmecparla

+0

Sie sollten wahrscheinlich auch die Nonce zensieren. Wie lauten die Berechtigungen für die von Ihnen angegebene Seite? Warum entkommt "ajaxurl" Schrägstriche (warum haben Sie vor jedem Schrägstrich einen Backslash gesetzt)? Können Sie die Seite manuell aufrufen? – Pyromonk

Antwort

0

Ich versuche zu haben, wo ist das Problem? :

public function search_type_fiche() { 

    $search_data = $wpdb->get_results(
     $wpdb->prepare(
      "SELECT id,slug FROM {$wpdb->prefix}fiches_type WHERE slug LIKE %s", 
      '%'.$_REQUEST['term'].'%' 
     ) 
    ); 

    $suggestions=array(); 

    foreach ($search_data as $post):   
    $suggestion = array(); 
    $suggestion['label'] = $post->slug; 
    $suggestion['link'] = $post->id; 
    $suggestions[]= $suggestion; 
    endforeach; 

    echo $_GET["callback"] . "(" . json_encode($suggestions) . ")"; 



     die(); 
    } 


$("#search_type_fiche").autocomplete({ 
     delay: 0, 
     minLength: 3, 
     source: function(req, response){ 
      $.getJSON(MyAjax.ajaxurl+'?callback=?&action='+MyAjax.action, req, response); 

     }, 
       select: function(event, ui) { 
        window.location.href=ui.item.link; 
       }, 
     } 
     ); 

Warum nicht arbeiten?

Wordpress haben diese und funktionieren: