Php 在select表单中使用AJAX
我正在构建一个简单的bug跟踪工具。 我想添加AJAX 当你创建了一个项目,你可以添加一个bug,你可以给这个bug一个未解决或已解决的状态。 我想用一个按钮和AJAX来改变这个状态 您可以通过此表单更改状态:Php 在select表单中使用AJAX,php,mysql,ajax,Php,Mysql,Ajax,我正在构建一个简单的bug跟踪工具。 我想添加AJAX 当你创建了一个项目,你可以添加一个bug,你可以给这个bug一个未解决或已解决的状态。 我想用一个按钮和AJAX来改变这个状态 您可以通过此表单更改状态: <form action="ajax/bugStatus.class.php" method="post"> <label> Change Bug Status </label> <select n
<form action="ajax/bugStatus.class.php" method="post">
<label> Change Bug Status </label>
<select name="status" id="status">
<option value="Unsolved">Unsolved</option>
<option value="Solved">Solved</option>
</select>
<input type='hidden' name='bugID'
value="
<?php
$row = mysqli_fetch_array($bugres);
echo $row['id'];
?>
">
<input type='hidden' name='bugID' value="<?php echo $id;?>">
<input name="btnChange" id="btnChange" class="small button" value="Change Status" type="submit">
</form>
这是实现AJAX的app.Change.js文件:
$("#btnChange").on("click",function(e){
var update = $("#post").val();
// AJAX CALL naar ajax/save_tweet.php
var request = $.ajax({
url: "ajax/bugStatus.class.php",
type: "POST",
data: {update : update},
dataType: "json"
});
request.done(function(msg) {
if(msg.status = "sucess")
{
// OK
var select = update;
}
else
{
// NOT OK
}
});
request.fail(function(jqXHR, textStatus) {
alert( "Request failed: " + textStatus );
});
e.preventDefault();
});
我做错了什么,因为我不工作?首先,没有id=post的元素,所以var update=$post.val;将是空白的。相反,您可能希望发送序列化的表单$form.serialize 其次,在Ajax处理程序中不返回JSON,而是纯文本-因此,请删除数据类型:JSON或使用JSON_encode来回送有效的JSON
var request = $.ajax({
url: "ajax/bugStatus.class.php",
type: "POST",
data: $("form").serialize(), // status=Unsolved&bugID=123
});
第三,表单中有一个错误,您有一个重复的bugID输入,但不确定这是否会破坏它
第四,成功后您实际上没有向Ajax请求返回任何内容?看起来您希望获得成功,在这种情况下,您希望:
if($result){
echo "success";
}
你不能那样使用ajax。您应该使用一个示例表单第一条注释,或者您应该在数据属性集中使用以下值:{status:$status.val,bugID:$bugID.val}, 如果您使用该选项,请从ajax中删除数据类型。在html中,必须将隐藏字段的id设置为bugID并使用一次。在php文件中,您应该删除这行代码$result=mysql\u real\u escape\u string$sql,因为您的$result永远不会为真
if($result){
echo "success";
}