2014-03-19 191 views
-1

我早些時候問過這個問題,但我仍然沒有幸運地找到它。簡單地說,我嘗試使用默認圖片更新個人資料圖片時,單擊刪除按鈕,我試圖使用ajax做到這一點,但是每當我點擊按鈕什麼都沒有發生,圖片沒有更新。我已經測試了自己的PHP頁面,它很好地工作,但JS不工作,所以有人可以發現我在這裏做錯了嗎?Ajax請求無法正常工作php

HTML

<button href="javascript:void(0);" onclick="delete;" class="btn btn-default delbutt">Delete</button> 

JS

function delete() 
{ 
$.ajax({ 
type: "POST", 
url: "test.php?action=delete", 
cache: false, 
success: function(response) 
{ 
var $divs = $("<div>" + response + "</div>"); 
    $("#phd").fadeOut('slow'); 
$(".suc_pic").fadeIn('slow').empty().append($divs.find("#msg")); 
} 
}); 
} 

這裏是PHP最後

$username = $_SESSION["userCakeUser"]; 
if(isset($_POST["action"]) && !empty($_POST["action"]) || isset($_GET["action"]) && !empty($_GET["action"])) 
{ 
if(isset($_GET["action"]) == "delete") 
{    
$profile = 'default.jpg'; 
$pp = $db->prepare("update users set profile = ? where username = ?"); 
echo $db->error; 
$pp->bind_param('ss', $profile, $username->username); 
$pp->execute(); 
} 
} 
else { 
echo "Something is wrong. Try again."; 
} 
+0

在php文件中,你啓用'session_start()' –

回答

0

POST查詢中默認的jQuery AJAX(1)沒有緩存,所以你可能應該只使用$.post helper。此外,查詢字符串值不會被解析爲超全局的$_POST,因此您的代碼將始終從$_POST["action"]中讀取空值。

function delete(){ 
    $.post(
     "test.php", 
     { 
      action: 'delete' 
     }, 
     success: function(response){ 
      var $divs = $("<div>" + response + "</div>"); 
      $("#phd").fadeOut('slow'); 
      $(".suc_pic").fadeIn('slow').empty().append($divs.find("#msg")); 
     } 
    ); 
} 

(1)如在API參考定義:

頁取出與POST從不緩存,所以高速緩存和ifModified在jQuery.ajaxSetup 選項()對這些請求沒有影響。

+0

不起作用.. – user3412305

+0

@ user3412305「不起作用」不是特別有用。謹慎闡述? –

+0

嗯,當我在控制檯中查看第7行的'id id missing''後'..我終於通過設置隱藏字段和使用數據來了解它。感謝您的幫助。最後事實證明onclick是錯誤的,因爲我錯過了() – user3412305

0

這是我的理解是jQuery的AJAX請求應該在某處有一個data:選項。另外,我看到你使用GET來發出請求,但是告訴jQuery使用POST。

$.ajax({ 
type: "GET", 
url: "test.php", 
cache: false, 
data : { 
action : 'delete' 
success : function(response) 
{ 
etc... 

我不是jQuery專家,但我認爲這可能是您的問題。我能想到的唯一的另一件事是成功功能不能正常工作。檢查你的F12菜單併發布任何警告/錯誤,以便我們可以看到它。