2016-08-17 39 views
0

我在index.php中有這個我想得到我的輸入數據(範圍)作爲變量到我的nova.php。當我嘗試使用 $ range = $ _GET ['range'];在nova.php中顯示: 未定義的索引:範圍。我想,我應該把諸如data:{range:range}之類的東西放到myAjax函數中。當然,它不工作從輸入變量通過ajax到外部php

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

我的AJAX

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

和我nova.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附近的位置。它的工作,當我把...HAVING distance < 150 ORDER BY...,但我想設置在輸入我的範圍,而不是使用靜態範圍

+0

如果有任何答案是正確的請標記爲正確答案請 – 2016-08-18 10:01:15

回答

2

入住此的jsfiddle

,你AJAX功能應該是

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

在PHP代碼改變這一行

$range = $_GET['range']; 

$range = $_POST['range']; 

此外,類型範圍的輸入應該定義一個值。前值=「100」。不要留下空白

+0

謝謝!它也在工作。 – Burco

+0

如果我想從db中使用變量值,那麼代替53.216908和7.453240。我將使用$ lat和$ lng其中port_name = $ port。我可能需要兩個查詢。第一個SELECT lat,lng FROM ports WHERE port_name = $ port; while($ row = $ query-> fetch_assoc()){ $ lat = $ row ['lat']; $ lng = $ row ['lng']; }然後第二個我將使用$ lat和$ lng而不是53.216908和7.453240。我對嗎? – Burco

+0

我用了2個查詢和它的工作。 – Burco

2

您使用post方法,以便使用$_POST沒有$_GET一樣,

$range = $_POST['range']; 

而你需要通過它在data一樣,

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

謝謝!它正在工作;) – Burco

1
您使用 $_GET

,你應該使用$_POST或者你可以使用$_REQUEST當你做不知道怎麼的數據都是未來

$range = $_REQUEST['range'];