2016-01-11 34 views
0

我想通過ajax發送一個JSON對象到同一頁面。在運行我的代碼時,ajax函數似乎發送了數據,就像我在響應中看到的那樣,PHP代碼中的$ id更改爲200,但我無法在網頁上顯示它。我已經包含了jquery.js文件(我不確定是否需要添加另一個js庫)。 我試着看了很多stackoverflow的答案,但無法解決我的問題。任何幫助,將不勝感激。Ajax和PHP相同的頁面不工作

PHP代碼:

<?php 
     if(isset($_POST['area_id'])){ 
      $id = $_POST['area_id']; 
      echo "Area ID: ".$id; 
     } else { 
      echo "test"; 
     } 
    ?> 

JQuery的AJAX

var dat = {area_id: 200, title: 'title'}; 
$.ajax({ 
    type:"POST", 
    data: dat, 
    success:function(res){ 
     alert(res); 
    } 
}); 
+0

alert()中顯示了什麼? – David

+0

我得到一個HTML響應,我可以看到「Area ID:200」 – ncdreamy

+0

那麼......這是怎麼回事?你期望'回聲「區域ID:」。$ id;'產生除*之外的東西*「區域ID:200」'? – David

回答

3

[根據意見的問題...]

您的頁面未被更新,因爲您沒有編寫代碼來更新它。 echo只是將文本發送到輸出,而alert()只是在消息框中向用戶顯示文本。爲了更新頁面客戶端,你需要編寫這樣的代碼。

例如,如果你有一個元素與id="output",並要設置響應文本到該元素,你可以這樣做:

$('#output').text(res); 

該元素會再拿到該文本:

<div id="output">Area ID: 200</div> 

服務器端代碼無法更改已發送到瀏覽器的頁面。當您的客戶端代碼通過AJAX接收新數據時,客戶端代碼需要以您希望的方式使用該數據。

1

替換alert(res);您的顯示的代碼。例如,假設你要顯示在HTML中div的,Ajax響應:

<div id="display-div"></div> 

,那麼你需要的JavaScript是

$('#display-div').html(res); 
1

如果你發送AJAX請求到同一個頁面,你應該exit()你的PHP腳本:

<?php 
    if(isset($_POST['area_id'])){ 
     exit("Area ID: " . trim($_POST['area_id'])); 
    } 
    echo "test"; 
?> 

這樣,你保證沒有其他的響應被打印出來。否則,整個HTML頁面(包括腳本)將被髮回。


然後,您可以使用@David's示例將您的響應注入到DOM中。

相關問題