2017-07-20 12 views
0

私はデータベースから検索結果を表示できるように、PHPからjavascriptに配列を送信しようとしています。私は配列をJSONに変換していますが、今はそれを取得できないようです。私はAJAXを使用したことがありませんが、私は持ってここで働い何人かの人々を持っていると誰もが(自分の時間の多くがそれに費やされていない許可された)正確な問題WordPress AJAXの問題

$(document).ready(function() { 
    var data = {}; 
    $.ajax({ 
     type: 'GET', 
     url: '../wp-content/plugins/advantage-geo/get_data.php', 
     data: "data", 
     dataType: 'json', 
     cache: false, 
     success: function(result) { 
      alert(result.d); 
      console.log(result); 
     }, 
     error: function(XMLHttpRequest, textStatus, errorThrown) { 
     alert("Status: " + textStatus); alert("Error: " + errorThrown); 
     }  
    }); 
}); 

を把握することができなかったことをJSファイルからの呼び出しです。 (それは}と一緒に閉じます);私はそれを削除していますが、コードブロックに取られていませんでした。)

次はPHPで

<?php 

header("Content-type:json"); 

global $wpdb; 

$sql = "SELECT * FROM wptest_geo_db"; 
$result = $wpdb->get_results($sql) or die(mysql_error()); 


echo json_encode($result); 

print_r(json_decode($person_array)); 
print_r($person_array); 

?> 

JSONが適切に作成され、私はPHPファイルからのページにそれを表示することができます。 AJAXコールで500の内部サーバーエラーが発生しましたが、理由はわかりません。

+2

PHPでエラーが表示される - https://stackoverflow.com/questions/1053424/how-do-i-get-php-errors-to-display – Chris

+0

^彼が言ったこと。 500エラーはサーバーエラーであるため、実際のエラーメッセージを確認する必要があります。リンクが示唆していることを試してください。サーバーのエラーログを確認することもできます。 –

+0

PHPが失敗している場合は、Webサーバーのエラーログを確認してください。 –

答えて

1

私の答えは、直接500 Server Errorについて語っていないかもしれませんが、私の答えを見ていくと解決するかもしれません。

AJAX呼び出しでは、HTTP要求タイプをJSONとして送信する必要はなく、エンコードされたJSONを文字列として出力するだけで済みます。 AJAXはこれをJSONデータとして認識します.JQuery AJAXにJSONデータが必要であることを伝える必要はありません。

<?php 
    // it's not required that the response HTTP request is of type JOSN 
    // just ignore this 
    //header("Content-type:json"); 

    global $wpdb; 

    $sql = "SELECT * FROM wptest_geo_db"; 
    $result = $wpdb->get_results($sql) or die(mysql_error()); 

    echo json_encode($result); 

    // you've echo-ed the encoded JSON just above 
    // why would you print the arrays? 
    // I assume it's for testing purpose 
    //print_r(json_decode($person_array)); 
    //print_r($person_array); 
?> 

今、WordPress AJAXに。あなたはそれを完全に間違っている。この文書を見て、AJAXをWordPress https://codex.wordpress.org/AJAX_in_Pluginsで処理する方法を見てください。リンクされたAJAXチュートリアル/ドキュメントの内容を試して試してみましょう。

+1

ドキュメントごとに、例の最後に* wp_die(); *も含める必要があります。 – Musk

+0

@Muskあなたはそうですが、それはWP AJAXが実装されているときの一部です。今、WP AJAXの近くでさえない – Junaid