2017-10-21 1 views
0

Die folgende Funktion gibt leere Zeichenfolge zurück. Kann jemand vorschlagen, was im folgenden Code falsch ist? Ich mache einen AJAX-Anruf für diese Funktion.Ajax Aufruf an Wordpress-Funktion Rückgabe leeres Array

function LoadImagesForMenus() { 

    $filenameArray = []; 
    $validextensions = ["gif", "jpg", "jpeg", "png"]; 
    $handle = opendir(get_template_directory().'/analyzer-images/'); 

    while ($file = readdir($handle)) { 
     if ($file !== '.' && $file !== '..' && !empty($file)) { 
      $filenameArray[] = $file; 
      $ext = pathinfo($file, PATHINFO_EXTENSION); 
      if (in_array($ext, $validextensions)) { 
       $fileArray = []; 
       $fileArray["fileName"] = "http://xn--ernhrungsberaterzrich-71b08c.ch/wp-content/themes/abundance/analyzer-images/$file"; 
       list($width, $height) = getimagesize("/home/httpd/vhosts/xn--ernhrungsberaterzrich-71b08c.ch/httpdocs/wp-content/themes/abundance/analyzer-images/$file"); 
       $fileArray["width"] = $width; 
       $fileArray["height"] = $height; 
       if ($width !== null && $height !== null) { 
        array_push($filenameArray, $fileArray); 
       } 
      } 
     } 
    } 
    echo json_encode($filenameArray); 
    exit(0); 
} 

Dank

+0

Was haben Sie versucht, es zu debuggen? Haben Sie bestätigt, dass die Datei existiert, dass Ihre Pfade korrekt sind, dass die Datei erfolgreich gelesen wird, dass $ filenameArray vor der Rückgabe die richtigen Werte hat? – FluffyKitten

+0

Die Dateien existieren im Ordner. Wordpress hat keine Fehler im obigen Code protokolliert. Bewegliche Anweisung echo json_encode ($ filenameArray); Innerhalb der while-Schleife wird ein Array mit Bildinformationen zurückgegeben. – user1404963

+0

Also das Problem ist, dass das Array irgendwie gelöscht wird, ist das richtig? Wo in der While-Schleife war das Array Drucken - ist es vor oder nach dem 'if ($ width! == null && $ height! == null) '? – FluffyKitten

Antwort

0

Der Aufruf von json_encode() versagt. Sie sollten bei Aufrufen von json_encode nach einem Fehler suchen.

$json = json_encode($filenameArray); 
if ($json !== FALSE) { 
    echo $json; 
} else { 
    error_log('json_encode() failed with error=' . json_last_error()); 
} 

Es gibt wahrscheinlich einen anderen Eintrag, den json_encode() nicht verarbeiten kann. Sie sollten diesen Eintrag entweder überspringen oder die Optionen auf json_encode() setzen, um die Zeichen im Eintrag zu behandeln.

+0

Vielen Dank. Das hat mein Problem gelöst. Ich schätze wirklich. – user1404963

+0

Das erste Mal, dass ich dieses Problem hatte, brauchte ich sehr lange, um zu lösen - der Nachteil ist, dass die Beispiele in den PHP-Handbuchseiten die Fehlerprüfung nicht zeigen. – B68C

+0

Das hat mich total fertig gemacht. Ich habe seit gestern darüber gesucht. Ich kann Ihnen nicht genug für Ihre wertvolle Antwort danken. – user1404963

Verwandte Themen