2015-06-10 101 views
0

我試圖通過ajax將一些數據發回到同一頁面。在下面的示例中,一旦單擊按鈕,$name變量就不會在我的頁面中更新。但是,如果我查看來自ajax的響應的控制檯日誌(使用螢火蟲),它會顯示正確的html,並插入名稱(即<div>Matthew</div>) - 頁面只是沒有被此響應更新。任何想法如何解決這個將不勝感激。當返回到當前頁面時不顯示jQuery ajax響應

我的代碼是:

<!DOCTYPE html> 
<html> 
<head> 
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> 

</head> 
<body> 

<?php 
$name = "A name"; 
if ($_SERVER["REQUEST_METHOD"] == "POST") { 
    if (empty($_POST["name"])) { 
    $name = "No name!"; 
    } 
    else{ 
    $name = $_POST["name"]; 
    } 
} 
?> 

<script> 
$(document).ready(function(){ 
    $("button").click(function(){ 
     var mydata = {name: "Matthew"}; 
     $.ajax({ 
      type: 'POST', 
      data: mydata, 
      success: function(data){ 
      console.log(data); 
      } 
     }); 

    }); 
}); 
</script> 

<button>Send an HTTP POST request to a page and get the result back</button> 

<div id="name"> 
<?php echo $name;?> 
</div> 

</body> 
</html> 
+0

頁面不會只是更新其自我 - 這就是AJAX的整點,你需要使用返回的數據(在成功的函數)通過javascript更新它。 – Steve

+0

Ajax不能這樣工作。轉到你的'success:function',在那裏,你將'data'分配給'div'標籤。 –

+0

或者只是做一個常規的表單發佈,sans ajax – Steve

回答

1

正是因爲這樣的Ajax調用時<?php echo $name;?>不會再運行。你必須更換div的內容在成功的功能是這樣的:

success: function(data){ 
      $("div").html(data); 
      } 
+0

太好了,非常感謝。這已經解決了我的問題,雖然現在我看到了按鈕的副作用顯示兩次!任何想法是什麼引起的? –

+0

@MattPitkin這是因爲你正在用ajax加載整個頁面。加載你的頁面的一小部分,你必須把php放在一個不同的文件中,並在你的ajax參數中調用這個url,或者使用'.load(「url div」);'http://api.jquery.com/載入/ –

+1

再次感謝。我意識到只要在ajax成功函數中加入'$(「#name」)。html(mydata ['name']);''就可以將我想要的數據發送給div元素。 –