我想使用选择选项“选择”来更改值。我尝试将值“ Selected”从ajax发布到php Function,但是我无法在函数中获取它。这是我的Ajax代码:
$('#Id_Kund').change(function() {
var selected = this.value;
}
$.ajax({
url: "locations.php",
method: "POST",
data: {
selected: selected
},
success: function(data) {
initMap();
}
});
});
PHP代码:
if(isset($_POST["selected"])){
$F_Selected = $_POST['selected'];
}else{$F_Selected ="%";}
同一PHP文件中的功能:
function get_all_locations($con){
global $F_Selected;
$sqldata = mysqli_query($con,'select * from locations WHERE gewerk LIKE "'.$F_Selected.'"');
$rows = array();
while($r = mysqli_fetch_assoc($sqldata)) {
$rows[] = $r;}
$indexed = array_map('array_values', $rows);
echo json_encode($indexed);
if (!$rows) {
return null;
}
}
所以我通常会得到我的json数据:
var locations = <?php get_all_locations($con) ?>;
首先,您的代码容易受到SQL注入
在查询中使用变量之前,应先对其进行转义
$F_Selected = mysqli_real_escape_string($con, $F_Selected);
另一个选择是使用mysqli准备好的语句https://www.php.net/manual/en/mysqli.quickstart.prepared-statements.php
或PDOhttps://www.php.net/manual/en/book.pdo.php。
如果您不这样做,则很容易受到SQL注入和潜在的系统危害
现在有关您的全局变量,因为您不提供完整的代码,所以我不确定,但是似乎在调用get_all_locations($con)
$F_selected
时未分配值。
此php代码似乎在包含javascript和php的html文件中,因此可能在您的页面加载时执行,我猜只有一次。此代码在哪里?在initMap()
里面吗?如果是这种情况,那么它将无法从AJAX调用中获得结果...
var locations = <?php get_all_locations($con) ?>;
然后您似乎从ajax POST调用此文件
$.ajax({
url: "locations.php",
但是不对返回的数据做任何事情
success: function(data) {
initMap();
}
您可能想从ajax调用中获取json编码的数据,并在您的函数中使用它……类似这样:
success: function(data) {
initMap(data);
}
无论如何,最好不要使用全局变量在函数中使用额外的参数
function get_all_locations($con,$selected)
另一个问题(可能会导致javascript SyntaxError的问题是您在这里关闭函数的时间过早...
$('#Id_Kund').change(function() {
var selected = this.value;
}
如果您发布有关代码的更多详细信息,我可以为您提供更多帮助。