2012-05-10 20 views
0

私は前の例をすべて見ましたが、ダイスはまだありません。基本的なPHPの質問があります。AjaxからPhpに変数を渡す

例はhereです。私は1つのテーブルをクリックできるようにしたいとオプションを以下のように表示されています:明示的にこのコードでは、テーブル名を宣言

Example

は動作します:

if($_GET['action'] == 'getOptions'){ 
     $category = $_GET['category']; 
     $query = "SELECT `COLUMN_NAME` 
        FROM `INFORMATION_SCHEMA`.`COLUMNS` 
        WHERE `TABLE_SCHEMA`='headfirstjson' AND 
        **`TABLE_NAME`='AmericanOilProduction'**"; 

     $result = db_connection($query); 
     //echo $result; 
     $Options = array(); 

     while ($row = mysql_fetch_array($result)) {     
       $Options[] = $row; 
     } 
     echo json_encode(array("Options" => $Options)); 
     exit; 
} 

を渡すのこの組み合わせは、 AJAXによって変数はしていません:

AJAX:

function getOptions(category){ 
var category = category.value 
$.ajax({ 
    url: "getData.php?action=getOptions", 
    type: "GET", 
    dataType:"json", 
    data: {category:category}, 
    success: function(json){ 
     $.each(json.Options,function(){ 
     var option = "<option>"+this.COLUMN_NAME+"</option>" 
     $('#options').append(option) 
    }); 
    } 
}); 
} 

PHP:

if($_GET['action'] == 'getOptions'){ 
     **$category = $_GET['category']**; 
     $query = "SELECT `COLUMN_NAME` 
        FROM `INFORMATION_SCHEMA`.`COLUMNS` 
        WHERE `TABLE_SCHEMA`='headfirstjson' AND 
        `TABLE_NAME`='**.$category.**'"; 

     $result = db_connection($query); 
     //echo $result; 
     $Options = array(); 

     while ($row = mysql_fetch_array($result)) {     
       $Options[] = $row; 
     } 
     echo json_encode(array("Options" => $Options)); 
     exit; 
    } 

誰かが私を助けることができたら嬉しいです!ありがとう。

+1

SQLインジェクションを防ぐために '$ category'を忘れないでください... – Alnitak

答えて

3

あなたはそれを取り巻く期間と$categoryを連結しようとしています。二重引用符は、変数を展開してテーブル名 '.AmericanOilProduction'を作成します。連結演算子を削除するようにコードを変更します。彼らはここでは必要ありません。

if($_GET['action'] == 'getOptions'){ 
    $category = $_GET['category']; 
    $query = "SELECT `COLUMN_NAME` 
       FROM `INFORMATION_SCHEMA`.`COLUMNS` 
       WHERE `TABLE_SCHEMA`='headfirstjson' AND 
       `TABLE_NAME`='$category'"; 

    $result = db_connection($query); 
    //echo $result; 
    $Options = array(); 

    while ($row = mysql_fetch_array($result)) {     
      $Options[] = $row; 
    } 
    echo json_encode(array("Options" => $Options)); 
    exit; 
} 
+0

うわー、ありがとう!それは今働く。それらの期間は私に相当な時間をかけています! – user578582

+0

@ user578582これは受け入れられた回答としてマークしてください – TheVillageIdiot

+0

ええ、私はしようとしましたが、30秒以上待たなければなりません! – user578582

1

私はと思う jQueryは、URL自体と、data:オプションの両方でURLパラメータが存在すると混乱しています。

ではなくdata:オプションにあなたのactionパラメータを入れてみてください:

data: { 
    category: category, 
    action: 'getOptions' 
}, 
関連する問題