2013-08-20 17 views
0

我正在構建一個簡單的錯誤跟蹤工具。 我想添加AJAX。以選擇的形式使用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> 

這是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(); 

這是app.Change.js文件,其中AJAX實現:

  $("#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

首先,沒有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";  
} 
0

你不能使用這樣的ajax。您應該使用第一條評論的示例,或者您應該在數據屬性集中設置如下數據:{status:$(「#status」).val(),bugID:$(「#bugID」).val()} ,
如果您使用該從Ajax中刪除dataType。在html中,您必須將隱藏字段的ID設置爲「bugID」並使用一次。在php文件中,你應該刪除這行代碼「$ result = mysql_real_escape_string($ sql),因爲你的$結果永遠不會是真的。」