Abfrage vars in URL-Arbeit, aber nicht in Ajax-Aufruf

Ich arbeite an Ajax-Skript, das WordPress-Seite aufruft und Beiträge als Daten abruft.

Aber ich habe eine Sackgasse erreicht.

Verwenden: http://codex.wordpress.org/WordPress_Query_Vars

Wenn ich url direkt mit query_vars eintrage funktioniert es und Beiträge werden korrekt gefiltert, aber wenn ich das gleiche mit Ajax übergebe, listet es nur ungefilterte Beiträge auf. Ich habe überprüft, ob die Parameter durchkommen, aber wp fängt sie nicht ein.

was soll ich machen?

Code:

http://domain.com/blog/wp-content/themes/wovies-bones/getmovies.php?actor=x Und funktioniert gut, ich bekomme einzelne Post, die benutzerdefinierte Taxonomie actor = x hat.

Aber wenn ich versuche, dasselbe mit Ajax zu laden, verhält es sich anders und das Ignorieren meiner Get-Anfrage gibt alle Posts zurück …

Ajax-Jquery Teil:

$.ajax({ url: templatePath + "getmovies.php", type: "GET", data: filters_get, cache: false, success: function (data){ console.dir(data); } }); 

Und php Teil:

  /* Define these, So that WP functions work inside this file */ define('WP_USE_THEMES', false); require('../../../wp-blog-header.php'); ?> 
<a href="https://wordpress.stackexchange.com/questions/103270/query-vars-in-url-work-but-not-in-ajax-call/"> <?php if (has_post_thumbnail()) {the_post_thumbnail('homepage-preview');} else {echo '';} ?>

filters_get sieht so aus:? actor = x &

Solutions Collecting From Web of "Abfrage vars in URL-Arbeit, aber nicht in Ajax-Aufruf"

Das ist nicht der richtige Weg, Daten zu spezifizieren.

Wenn Sie jQuery AJAX verwenden, geben Sie Daten als Array oder Objekt an, wenn Sie sie an die Methode übergeben. In deiner Frage scheint es so

 'filters_get' === '?actor=x&' 

Stattdessen sollten Sie Folgendes tun:

 filters_get = { 'actor': 'x' }; $.ajax({ url: templatePath + "getmovies.php", type: "GET", data: filters_get, cache: false, success: function (data){ console.dir(data); } }); 

jQuery analysiert intern die URL, um automatisch die Abfragezeichenfolgen für Sie zu erstellen. In der jQuery-Dokumentation lautet der Datenparameter:

Daten, die an den Server gesendet werden sollen. Es wird in eine Abfragezeichenfolge konvertiert, wenn nicht bereits eine Zeichenfolge. Es wird an die URL für GET-Anfragen angehängt.

Ihr Format sollte nicht die haben ? darin, weil das die Schnur brechen wird. Es ist jedoch einfacher, mit der Codierung umzugehen, wenn Sie stattdessen einfach ein Objekt (assoziatives Array) übergeben.