2016-02-22 60 views
0

當點擊一個鏈接時,我想要將該名稱發送到一個php頁面並將其放入數據庫。Ajax發佈到php頁面並插入

目前,當單擊鏈接時出現成功消息,並顯示一個彈出窗口,其中顯示了Object對象而沒有其他內容。

這是我的鏈接的外觀:

<a onclick="save()" id="1" name="MyName">Button Name</a> 

這是我的Jquery:

function save() { 
    $.ajax({ 
     url: "path/to/php", 
     data: { 
      name: 'name' 
     }, 
     dataType: 'JSON', 
     type: 'POST', 
     cache: false, 
     success: function(succ) { 
      alert(succ); 
     }, 
     error: function(err) { 
      alert(err); 
     } 
    }); 
} 

這是我的PHP:

if(isset($_POST['save'])){   
    $Variable1 = $_POST['name']; 
    mysqli_query($connection, "INSERT INTO `test`(`valueID`) VALUES ($Variable1)"); 
} 
+0

Repla ce'isset($ _ POST ['save'])''用'isset($ _ POST ['name'])''。 –

+0

@SergeSeredenko沒有不工作。 ajax仍然會彈出對象對象,並且不會發送數據。 – JohnyChew

+0

您正在獲取'[Object object]',因爲您的響應是一個對象。你將不得不使用單獨的屬性或嘗試JSON.stringify(響應) – Rajesh

回答

0

你可以改變你的PHP代碼:

if(isset($_POST['name'])){   
    $name = $_POST['name']; 
    mysqli_query($conn, "INSERT INTO `test`(`valueID`) VALUES ('$name')"); 
    if(mysqli_affected_rows($conn) > 0){ 
     echo json_encode(array('status'=>1)); 
    } 
    else{ 
     echo json_encode(array('status'=>0)); 
    } 
} 

而在你的Ajax成功:

success: function(response) { 
    if(response.status == 1){ 
     alert('success'); 
    } 
    else{ 
     alert('failure'); 
    } 
}, 
..... 

說明:

您正在使用響應類型JSON和不發送從PHP文件什麼。 您可以通過json_encoded表格從PHP發送狀態。

而且你可以在ajax響應中獲得successfailure狀態。

一兩件事,從你的& @SergeSeredenko意見,你需要使用單引號的字符串值,如果valueID是字符串輸入。


更新1:

您可以通過使用data-attr作爲得到<a>值:

<a onclick="save()" id="AncharID" data-myID="123" class="btn-large mcqtest">Button Name</a> 

在jQuery中,使用此:

function save() { 
    var id = $("#AncharID").attr("data-myID"); // getting from attr 
    $.ajax({ 
     url: "path/to/php", 
     data: { 
      name: id 
     }, 
     dataType: 'JSON', 
     type: 'POST', 
     cache: false, 
     success: function(response) { 
      if(response.status == 1){ 
       alert('success'); 
      } 
      else{ 
       alert('failure'); 
      } 
     }, 
     error: function(err) { 
      alert(err); 
     } 
    }); 
} 
+0

我得到成功,但沒有什麼是實際插入數據庫 – JohnyChew

+0

@JohnyChew:回答更新,使用引號'$名稱' – devpro

+1

首先,我「你怎麼可能「,但後來意識到你必須做'if(mysqli_affected_rows($ conn)> 0)'。 –