2017-06-09 31 views
0

私はAJAXから送信されたPHPファイルの変数にアクセスしようとしています。下記のように$ _POST ['category_id']を試しましたが、運がありません。 category_id変数が何らかの値に設定されている場合、私はそれをすでにチェックしました。私はこの問題がデータ型のJSONにあるかもしれないと思いますが、わかりません。PHPでデータを取得Ajaxから送信

if(optimizedDatabaseLoading == 1){ 
     google.maps.event.addListener(map, 'idle', function(){ 
      if(searchClicked != 1){ 
       var ajaxData = { 
        optimized_loading: 1, 
        north_east_lat: map.getBounds().getNorthEast().lat(), 
        north_east_lng: map.getBounds().getNorthEast().lng(), 
        south_west_lat: map.getBounds().getSouthWest().lat(), 
        south_west_lng: map.getBounds().getSouthWest().lng(), 
       }; 
       if(markerCluster != undefined){ 
        markerCluster.clearMarkers(); 
       } 
       loadData(category_id, "assets/external/data.php", ajaxData); 
      } 
     }); 
    } 
    else { 
     google.maps.event.addListenerOnce(map, 'idle', function(){ 
      loadData(category_id, "assets/external/data.php"); 
     }); 
    } 

    function loadData(category_id, url, ajaxData){ 
     console.log('inside:', category_id); 
     $.ajax({ 
      url: url, 
      dataType: "json", 
      method: "POST", 
      data: ajaxData, category_id: category_id, 
      cache: false, 
      success: function(results){ 
       for(var i=0; i <newMarkers.length; i++){ 
        newMarkers[i].setMap(null); 
       } 
       allMarkers = results; 
       placeMarkers(results); 
      }, 
      error : function (e) { 
       console.log(e); 
      } 
     }); 
    } 

data.php

if (!isset($_POST['category_id'])) { 
    if (!empty($_POST["optimized_loading"])) { 
     $queryData = mysqli_query($connection, "SELECT id, title, latitude, longitude, address, marker_image FROM items WHERE latitude <= " . $_POST["north_east_lat"] . " AND latitude >= " . $_POST["south_west_lat"] . " AND longitude <=" . $_POST["north_east_lng"] . " AND longitude >= " . $_POST["south_west_lng"]); 
    } else { 
     $queryData = mysqli_query($connection, "SELECT id, title, latitude, longitude, address, marker_image FROM items"); 
    } 
} 
else { 
    if(!empty($_POST["optimized_loading"])){ 
     $queryData = mysqli_query($connection, "SELECT id, title, latitude, longitude, address, marker_image FROM items WHERE latitude <= " . $_POST["north_east_lat"] . " AND latitude >= " . $_POST["south_west_lat"] . " AND longitude <=" . $_POST["north_east_lng"] . " AND longitude >= " .$_POST["south_west_lng"] . " AND items.item_category_id = " . json_decode($_POST['category_id'])); 
    } 
    else { 
     $queryData = mysqli_query($connection, "SELECT id, title, latitude, longitude, address, marker_image FROM items WHERE items.item_category_id = 1" . json_decode($_POST['category_id'])); 
    } 
} 
+0

あなたのコードは[** SQLインジェクションは、**](https://en.wikipedia.org/wiki/SQL_injection)攻撃に対して脆弱であるプロパティを追加することができます。 [** mysqli **](https://secure.php.net/manual/en/mysqli.prepare.php)または[** PDO **](https://secure.php.net/)を使用してください。 manual/en/pdo.prepared-statements.php)は、[** this post **](https://stackoverflow.com/questions/60174/how-can-i-prevent-sql - インジェクション - イン - php)。 –

答えて

1

あなたが送っているデータは、あなたがそれは、あなたが$.ajaxに渡されたオブジェクトのプロパティとしてデータが送信されていないcategory_idを設定していると思われるものではありません。

あなたがオブジェクトを拡張し、

$.ajax({ 
    url  : url, 
    dataType : "json", 
    method : "POST", 
    data  : $.extend(ajaxData, {category_id: category_id}), 
    success : function(results){ 
     for(var i=0; i <newMarkers.length; i++){ 
      newMarkers[i].setMap(null); 
     } 
     allMarkers = results; 
     placeMarkers(results); 
    }, 
    error : function (e) { 
     console.log(e); 
    } 
}); 
+0

PHPで変数にアクセスするにはどうしたらいいですか? $ _POST ['category_id']はまだnullに設定されていますか? –

+0

'category_id'はJavaScriptのどこから来たのですか?投稿されたコードで定義されていませんか? – adeneo

+0

console.log( 'inside:'、category_id)は、例えば2を出力します。これは外部関数からのパラメータです。 –

関連する問題