我正在尝试使用ajax函数从数据库中获取数据。但是代码的某些部分不起作用。 $ car_id,witch是下拉列表中的选定值,在函数的第二部分中被遗忘。
首先。我有一个用户可以选择汽车的下拉列表:
<select name="car_id" id="car_id" onChange="getCar(this.value)">
<option value="0">Select</option>
<option value="1">Volvo XC90</option>
<option value="2">Saab 95</option>
<option value="3">Mercedes SLK</option>
<option value="4">Audi TT</option>
</select>
选择(onChange事件)后,我的脚本运行以下功能:
<script>
function getCar(selectedItem) {
jQuery.ajax({
url: 'get1.php',
method: 'POST',
data: {'car_id' : jQuery('#car_id').val()},
success: function(response){
jQuery('#car_id').val(response);
jQuery('#car_brand').val(response);
getCar2()
},
error: function (request, status, error) {
alert(request.responseText);
},
});
}
</script>
此函数运行以下SQL查询:
SELECT car_brand FROM cars WHERE car_id = $car_id
该函数从数据库中获取car_brand
并将其发布到#car_brand
文本字段中。这部分代码工作正常。但正如您所看到的,该函数调用第二个函数:
<script>
function getCar2(selectedItem) {
jQuery.ajax({
url: 'get2.php',
method: 'POST',
data: {'car_id' : jQuery('#car_id').val()},
success: function(response){
jQuery('#car_id').val(response);
jQuery('#car_model').val(response);
},
error: function (request, status, error) {
alert(request.responseText);
},
});
}
</script>
这次函数尝试获取car_model
。该函数需要将其发布到#car_model
文本字段中。但这不起作用。当我查看firebug控制台时,我发现第二个函数getCar2
忘记了$ car_id。
当我选择值3时,第一个函数运行SQL语句:
SELECT car_brand FROM cars WHERE car_id = 3
和第二个功能:
SELECT car_model FROM cars WHERE car_id =
我该如何解决这个问题?
更新1:
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "database";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname) ;
// Check connection
if ($conn->connect_error) {
die('Connection failed: ' . $conn->connect_error) ;
}else {
$car_id = isset($_POST['car_id'])?$_POST['car_id']:'';
$car_brand = isset($_POST['car_brand'])?$_POST['car_brand']:'';
$query = 'SELECT * FROM cars WHERE car_id="' . mysqli_real_escape_string($conn, $car_id) . '"';
$res = mysqli_query($conn, $query) ;
if (mysqli_num_rows($res) > 0) {
$result = mysqli_fetch_assoc($res) ;
echo $result['car_brand'];
}else{
$result = mysqli_fetch_assoc($res) ;
echo "";
}
}
?>
答案 0 :(得分:1)
从getCar中删除jQuery('#car_id').val(response);
。无需更新它,因为它已经具有car_id
<script>
function getCar(selectedItem) {
jQuery.ajax({
url: 'get1.php',
method: 'POST',
data: {'car_id' : jQuery('#car_id').val()},
success: function(response){
jQuery('#car_brand').val(response);
getCar2()
},
error: function (request, status, error) {
alert(request.responseText);
},
});
}
</script>
答案 1 :(得分:1)
首先,您要将#car_id
重新分配给函数getCar()
中的新值,并使用以下行:jQuery('#car_id').val(response);
。
您在第一个函数ajax回调中为两个dom元素分配了相同的值response
。我不知道这是不是你打算做什么。您正在通过getCar()
变量向select
函数传递selectedItem
元素的实际值。如果确实需要重新分配#car_id
的值,则应将selectedItem
变量传递给getCar2
函数,该函数应该仍然包含最初选择的值,并将其用于getCar2
函数。
否则,从jQuery('#car_id').val(response);
函数中删除行getCar
,您也可以删除将变量传递给这两个函数,因为您没有在其他地方使用它们。