[英]JQuery AJAX POST is not sending data to PHP file
我花了整整一天的时间试图找出问题所在,并且在这里阅读了很多类似的问题,但这似乎是一个奇特的问题。
我想要一个AJAX调用来填充基于MySQL数据库先前选择的下拉列表,但是由于POST未将任何数据发送到PHP $id = $_POST['id']
文件,因此它无法正常工作。 但是,如果我为其分配一个常量值(例如$id = 1
),它就可以正常工作并从数据库返回期望的数据。
这是AJAX代码:
<script type="text/javascript">
$(document).ready(function()
{
$("#state").change(function()
{
var menuId = $(this).val();
var request = $.ajax({
url: "schools.php",
type: "POST",
data: { id : menuId },
dataType: "html"
});
request.done(function( msg ) {
$("#schools").html( msg );
});
});
});
</script>
和PHP代码:
<?php
include('../connection.php');
if(isset($_POST['id']) && $_POST['id'] != '')
{
$id = $_POST['id'];
$SQ = "SELECT c_name FROM courses WHERE fac_id = ?";
$q = $conn->prepare($SQ) or die("ERROR: " . implode(":", $conn->errorInfo()));
$q->bindParam(1, $id);
$q->execute();
$total = $q->fetchAll();
$i=1;
foreach ($total as $sch){
echo "<option class = 'option' value = '$i'>". $sch[0].</option>";
$i++;
}
}
?>
EDITTED:
这是HTML代码:
<form class="form-horizontal">
<!-- Form Name -->
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="selectbasic">State where your school is located</label>
<div class="controls">
<select id="state" name="state" class="form-control input-xlarge">
<?php
$i=1;
$SQ = "SELECT * FROM states";
$schools = $conn->prepare($SQ);
$schools->execute();
$total = $schools->fetchAll();
foreach ($total as $sch){
echo "<option class = 'option' value = '$i'>". $sch[1]. "</option>";
$i++;
}
?>
</select>
</div>
</div>
<!-- Select Basic -->
<div class="control-group">
<label class="control-label" for="selectbasic">School</label>
<div class="controls">
<select name="school" id = 'schools' class="form-control input-xlarge">
<?php
$i=1;
$SQ = "SELECT * FROM schools";
$schools = $conn->prepare($SQ);
$schools->execute();
$total = $schools->fetchAll();
foreach ($total as $sch){
echo "<option class = 'option' value = '$i'>". $sch[1]. "</option>";
$i++;
}
?>
</select>
</div>
</div>
</form>
我会尝试直接使用$ .ajax而不是将其设置为变量。
$.ajax({
url: "schools.php",
type: "POST",
data: { id : menuId },
dataType: "html",
success: function(data){
append data stuff here.
},
error: function(xhr, status, error){
console.log(error + " error from here");
}
});
使用错误功能,您可以打印出错误(如果返回任何错误)。 它可以帮助您调试问题。
在jQuery的某些旧版本中,select从不始终返回val()。 您可以尝试看看是否可行:
var menuId = $("option:selected",this).val();
此外,可能并非如此,但有时我发现这可行。
data: { 'id' : menuId }, //note the quotes
只是尝试速记版本,看看是否有帮助。
$.post('schools.php',{ 'id' : menuId },function(d){
$("#schools").html( d );
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.