Php 在select表单中使用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

我正在构建一个简单的bug跟踪工具。 我想添加AJAX

当你创建了一个项目,你可以添加一个bug,你可以给这个bug一个未解决或已解决的状态。 我想用一个按钮和AJAX来改变这个状态

您可以通过此表单更改状态:

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