2016-08-17 6 views
0

私はこれをindex.phpに入れました。私の入力データ(範囲)を変数として、私のnova.phpに入れたいと思います。私が使用しようとしているとき $ range = $ _GET ['range']; nova.phpに表示されます: 未定義のインデックス:範囲。私は、データのようなものを{range:range}のようにmyAjax関数に入れるべきだと思います。 入力からajaxを通して入力から外部のPHPに

<?php 
if($_POST['action'] == 'call_this') { 
$con=mysqli_connect("localhost","tech","151987","portnew"); 
// Check connection 
if (mysqli_connect_errno()) 
{ 
echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 
$range = $_GET['range']; 
// Perform queries 
$query = $con->query("SELECT (6371 * acos(cos(radians(53.216908))* 
cos(radians(lat)) * cos(radians(lng) - radians(7.453240)) + 
sin(radians(53.216908)) * sin(radians(lat)))) AS distance,  
port_name FROM ports HAVING distance < '".$range."' ORDER BY distance LIMIT 0 , 20; "); 

while ($row = $query->fetch_assoc()) { 
    $port_list[] = $row['port_name']; 
} 
echo json_encode($port_list); 
} 
?> 

だから基本的には、このスクリプトは緯度、logitudeに基づいて近くの場所を探している:しかし、もちろん、私のAJAX

function myAjax() { 
    $.ajax({ 
     type: "POST", 
     url: 'nova.php', 
     data:{action:'call_this'}, 
     success:function(html) { 
     alert(html); 
     } 
    }); 
} 

と私のnova.php

<input id="range" type="text" name="range" class="enter" value=""> 
<input type="button" onclick="myAjax()" value="Show nearby" /> 

働いていません。私は...HAVING distance < 150 ORDER BY...を置くとき、それは働いているが、私は

$range = $_POST['range']; 

、そう$_POST好きではない$_GETを使用する静的範囲あなたがpostメソッドを使用している

+0

答えのいずれかが正解であった場合は正解としてください –

答えて

2

チェックを来ているのか分からない、このjsFiddle

、あなたは、Ajax機能は、PHPコードの変更このライン

$range = $_GET['range']; 

への

function myAjax() { 
var range = document.getElementById('range').value; 
    $.ajax({ 
     type: "POST", 
     url: 'nova.php', 
     data:{action:'call_this',range:range}, 
     success:function(html) { 
     alert(html); 
     } 
    }); 
} 

する必要があります

$range = $_POST['range']; 

また、タイプ範囲の入力には値が定義されている必要があります。 ex value = "100"。それを空白のままにしないでください

+0

ありがとうございました!..それも働いています。 – Burco

+0

そして、私は、53.216908と7.453240の代わりにdbからの変数値を使用したいと思っています。私は$ latと$ lngを使用します(port_name = $ port)。私はおそらく2つのクエリが必要になります。最初のSELECT lat、lng FROMポートWHERE port_name = $ port; while($ row = $ query-> fetch_assoc()){ $ lat = $ row ['lat']; $ lng = $ row ['lng']; }そして2番目には53.216908と7.453240の代わりに$ latと$ lngを使用します。私は正しい? – Burco

+0

私は2つのクエリとその動作を使用しました。 – Burco

2

を使用して入力して、私の範囲を設定し、いないしたいと思いますそして、あなたがする必要がありますあなたが$_GETを使用していて、$_POSTを使うべきか、あなたが行うときに$_REQUESTを使用することができ、同様にdata

data:{action:'call_this',range:$('#range').val()}, 
+0

ありがとう!それは働いています;) – Burco

1

を渡します件のデータが

$range = $_REQUEST['range']; 
関連する問題