2017-10-21 16 views
0

次の関数は空の文字列を返します。誰かが以下のコードで何が間違っていると示唆できますか?私はこの関数にAJAX呼び出しを行っています。Wordpress関数へのAjax呼び出しが空の配列を返します

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

おかげ

+0

何をデバッグしようとしましたか?ファイルが存在し、パスが正しいこと、ファイルが正常に読み込まれていること、$ filenameArrayが正しい値を持っていることなどを確認しましたか? – FluffyKitten

+0

ファイルはフォルダ内に存在します。 Wordpressは上記のコードでエラーを記録しませんでした。移動ステートメントecho json_encode($ filenameArray); whileループ内では、画像情報とともに配列を返します。 – user1404963

+0

問題は、配列が何とかクリアされているということですよね?whileループでは、配列の印刷がどこにあったのですか?if($ width!== null && $ height!== null) '? – FluffyKitten

答えて

0

json_encode()への呼び出しが失敗しています。 json_encodeへの呼び出しでエラーをチェックする必要があります。

おそらく、json_encode()が処理できない別のエントリがあります。このエントリをスキップするか、json_encode()にオプションを設定して、エントリ内の文字を処理する必要があります。

+0

ありがとうございました。これは私の問題を解決しました。本当に感謝しております。 – user1404963

+0

初めてこの問題が発生したとき、私は解決に非常に時間がかかりました。不利な点は、PHPのマニュアルページの例でエラーチェックが表示されないことです。 – B68C

+0

これは私を驚かせていた。私は昨日からそれを調べてきました。あなたの貴重なお返事に感謝します。 – user1404963

関連する問題