JSON-codierten HTML-Code von WordPress an JavaScript übergeben

Ich versuche, den Inhalt eines Posts (der HTML enthalten kann) über wp_localize_script () an JavaScript zu übergeben. wp_localize_script () kann mit mehrdimensionalen Arrays nicht umgehen, daher kodiere ich es in JSON und dekodiere es dann mit jQuery .

Das funktioniert gut, solange du nur Text hast und du den " Entität mit einem regulären " bevor Sie $.parseJSON() . Wenn Sie versuchen, einen Beitrag mit HTML darin zu analysieren, erhalten Sie jedoch Fehler wie,

JSON.parse: Name der erwarteten Eigenschaft oder ‘}’ http: //redactive.local/wp/wp-includes/js/jquery/jquery.js? Ver = 1.6.1 Zeile 16

Ich vermute also, dass ich noch mehr String-Manipulation machen muss, bevor ich versuche, es zu parsen, um mehr Entitäten wieder in die regulären Zeichen zu konvertieren, aber ich möchte nicht nur die wenigen Zeichen auswählen, mit denen ich Fehler habe, weil ich Ich bin mir sicher, dass es dutzende mehr gibt, die ich vermissen könnte. Gibt es eine umfassende oder standardmäßige Möglichkeit, dies zu tun? Ich habe viel gesucht und Antworten gefunden, so dass ich denke, dass ich etwas Offensichtliches vermisse.

Hier ist die PHP-Seite:

 public function loadResources() { // ... wp_register_script( 'bgmp', plugins_url( 'functions.js', __FILE__ ), array( 'googleMapsAPI', 'jquery' ), self::BGMP_VERSION, true ); // ... if( !is_admin() && $this->mapShortcodeCalled ) { // ... wp_enqueue_script('bgmp'); $bgmpData = array( 'options' => $this->getMapOptions(), 'markers' => $this->getPlacemarks() ); wp_localize_script( 'bgmp', 'bgmpData', $bgmpData ); } // ... } public function getPlacemarks() { // ... foreach( $publishedPlacemarks as $pp ) { // ... $placemarks[] = array( // ... 'details' => $pp->post_content, // ... ); } return json_encode( $placemarks ); } 

Und hier ist die JavaScript-Seite

 // ... init : function() { // ... bgmpData.markers = $.parseJSON( bgmpData.markers.replace(/"/g, '"') ); // ... }, // ... 

Solutions Collecting From Web of "JSON-codierten HTML-Code von WordPress an JavaScript übergeben"

Obwohl es keine genaue Antwort auf Ihre genaue Frage ist, stimme ich der Methode im Kommentar zu. Überspringen Sie einfach den Versuch, Daten in einzelne Dimensionen zu stopfen, und verwenden l10n_print_after stattdessen das Argument l10n_print_after .

Siehe Passobjekt / JSON zur wp_localize_script Frage und beantworte sie dort.

placemarks[] = array( das bedeutet, dass placemarks ein Array von Arrays sind, ist das richtig?

Außerdem brauchen Sie keine Entitäten hin und her, rufen $.parseJSON() einfach $.parseJSON() für alle bgmpData var auf:

 var bgmpData_parsed = $.parseJSON( bgmpData); 

dünn können Sie auf Marker mit bgmpData_parsed.markers