2014-03-03 59 views
0

我想將數據添加到我的數據庫,並取回訪問數據庫的php響應。在ajax請求後從php獲取響應文本

javascript代碼:

var request = $.ajax({ 
type: "POST", 
url: "nieuwDuel.php", 
data: dataString, 
success: function(response) 
{ 
    var responseText = "onbekend"; 
    responseText = jQuery(response); 
    document.getElementById("duelToegevoegd").innerHTML=responseText; 
    $("#openstaandeDuels").load("getOpenstaandeDuels.php"); 
} 
}); 

所以當一個名稱是無效或已經存在,我可以在我的html添加此消息span元素。

這是我的PHP代碼:

<?php 
if($_POST) 
{ 
    // Create connection 
    $con=mysqli_connect("localhost","root","root","websitedb"); 

    // Check connection 
    if (mysqli_connect_errno()) { 
     echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 

    $date = getdate(); 
    $date_time = $date['year'] . "-" . $date['mon'] . "-" . $date['mday'] . " " . $date['hours'] . ":" . $date['minutes'] . ":" . $date['seconds']; 

    $uitdagerArray = mysqli_query($con,"SELECT id FROM deelnemers WHERE naam='" . $_POST['uitdager'] . "'"); 
    $uitgedaagdeArray = mysqli_query($con,"SELECT id FROM deelnemers WHERE naam='" . $_POST['uitgedaagde'] . "'"); 

    $uitdager = mysqli_fetch_array($uitdagerArray); 
    $uitgedaagde = mysqli_fetch_array($uitgedaagdeArray); 

    $uitdagerId = $uitdager['id']; 
    $uitgedaagdeId = $uitgedaagde['id']; 

    $sql="INSERT INTO duels (uitdager, uitgedaagde, aanmaakdatum, gespeeld) VALUES ('" . $uitdagerId . "','" . $uitgedaagdeId . "','" . $date_time . "','" . "0" . "')"; 

    if(!mysqli_query($con,$sql)) { 
     echo mysql_errno() . ": " . mysql_error() . "\n"; 
    } 
    else { 
     echo "Duel Toegevoegd"; 
    } 
    mysqli_close($con); 
} 
?> 

那麼,這可能是從我的PHP代碼回聲文本將被傳遞到來自更迭功能的「迴應」?

編輯:

這是我的html代碼

<div id="nieuwDuel"> 
      <h2>Nieuw Duel</h2> 
      <form name="form" method="post"> 
       Uitdager: <input type="text" id="naamUitdager" placeholder="naam uitdager"> 
       Uitgedaagde: <input type="text" id="naamUitgedaagde" placeholder="naam uitgedaagde"> 
       <input type="submit" class="nieuwDuelToevoegen"> 
      </form> 
      <span id="duelToegevoegd" style="display:none"></span> 
      <a href="index.php#home">Home</a> 
     </div> 
+0

它總是傳遞給你的成功函數(除非有錯誤)。我沒有看到問題。 – putvande

+0

是的,那是應該做的。在成功聲明的最後一行中,嘗試添加警報(響應)以查看它。 – bart2puck

+0

響應是您從ajax調用中檢索到的文本,您可以僅通過jquery回顯或放入html元素。因此,請確保document.getElementById(「duelToegevoegd」)。innerHTML(response); – Naruto

回答

1

我假設你的PHP代碼是正確的。那麼你需要改變的是你的jQuery代碼。

只是改變了下面的代碼:

responseText = jQuery(response); 
document.getElementById("duelToegevoegd").innerHTML=responseText; 

到以下幾點:

responseText = response; 
$('#duelToegevoegd').html(responseText); 

我不知道你會用

$("#openstaandeDuels").load("getOpenstaandeDuels.php"); 

那麼該怎麼做,我現在把它排除在外

希望它有幫助

+0

我更新了我的代碼,但它仍然does not't工作。我已經在我的問題中發佈了我的html。 $(「#openstaan​​deDuels」).load(「getOpenstaan​​deDuels.php」)確實有效。在將數據添加到數據庫後,我更新了我的頁面,因此我的網頁上的表格使用新數據更新。 – Stein

+0

從你的HTML,我認爲它是因爲你的CSS #duelToegevoegd目前顯示無。嘗試添加$('#duelToegevoegd')。css('diplay','block'); – jmjap

+0

我忘了我有顯示:非我的HTML。這是因爲我首先使用了jQuery的隱藏和顯示功能。現在它工作正常! – Stein

1

是它應該工作。試着改變你的JS到

var request = $.ajax({ 
    type: "POST", 
    url: "nieuwDuel.php", 
    data: dataString, 
    success: function(response) 
    { 
     console.log(response);//This will output the response you are getting to the console so you can check it 
     $("#duelToegevoegd").html(response); 
     $("#openstaandeDuels").load("getOpenstaandeDuels.php"); 
    } 
}); 

而且雖然它取決於用戶是誰,我不會迴應了,你回來給客戶

echo "Failed to connect to MySQL: " . mysqli_connect_error(); 

任何錯誤,但你不希望任何人未經授權看到這些錯誤

+0

我收到的響應文本沒問題,但我想在我的html的輸入字段下顯示它。而且你對錯誤是正確的,我應該改變他們爲一個用戶友好的界面 – Stein