我正在构建一个简单的错误跟踪工具。 我想添加AJAX。
当您创建项目时,您可以添加错误,您可以将此错误提供给状态(未解决或已解决)。 我想用一个按钮和使用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>
这是bugStatus.class.php文件:
$status = $_POST['status'];
$bugID = $_POST['bugID'];
$sql=" UPDATE bugs SET status = '$status' where id = $bugID ";
$result = mysql_query($sql);
$result = mysql_real_escape_string($sql);
if($result){
header('Location: ../bugpage.php?id='.$bugID);
} else {
echo "There is something wrong. Try again later."; }
mysql_close();
这是实现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();
});
我做错了什么,因为我不工作?
答案 0 :(得分:0)
首先,没有id = post的元素,因此var update = $("#post").val();
将为空。相反,您可能希望发送序列化表单$("form").serialize()
。
其次,你没有在Ajax处理程序中返回JSON,而是返回纯文本 - 所以,删除dataType: 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";
}
答案 1 :(得分:0)
你不能像那样使用ajax。您应该使用示例表单第一个注释,或者您应该在数据属性中设置值,如此数据:{status:$(&#34; #status&#34;)。val(),bugID:$(&#34;# BUGID&#34;)VAL()},
如果你使用它从ajax中删除dataType。在html中,您必须将隐藏字段的ID设置为&#34; bugID&#34;并使用一次。在php文件中你应该删除这行代码&#34; $ result = mysql_real_escape_string($ sql),因为你的$ result永远不会是真的。