2015-08-24 42 views
0

我有一個用戶提交數據的頁面。是否有可能使用jquery ajax更新不同頁面上的元素?

/user1.php 

$.ajax({ 
    type: 'POST', 
    url: '/myDB.php', 
    data: { 
     'val' : val 
    }, 
    dataType : 'json', 
    success: function (response) { 
     // update user1.php 
    } 
}); 

使用jQuery $.ajax()這個POST數據到哪裏存儲數據到數據庫第二頁,如果成功返回響應返回給user.php的

/myDB.php 

$userData = $_POST['userData'];  

// STORE DATA IN DB 

echo '{ "status": "Ok" }'; 

// update user2.php > $('#em').text($userData); 

是否有可能使用jQuery來更新第二個用戶查看的頁面上的另一個元素?

/user2.php 

<div id="em"></div> 

我知道我可以從另一個頁面內容​​一部分,只是不知道是否有反向流動的可能性。

感謝

+3

通常,第二頁將定期輪詢以查看是否有任何更改。但是你也可以使用'WebSockets'來保持永久連接的打開並讓服務器立即發送更改。 – Barmar

回答

1

最好的辦法是檢查是否有任何變化:

checkupdate.php

<?php 

// Check database 

$res = Array('changed' => false) 

if ($data = $res->fetch();){ 
    $res['changed'] = true; 
    $res['data'] = $data; 
} 

exit(json_encode($res)); 

關於你的第二頁:

function checkupdate(){ 
    $.ajax({ 
     type: 'POST', 
     url: '/checkupdate.php', 
     data: { 
      'val' : val 
     }, 
     dataType : 'json', 
     success: function (response) { 
      if (response.changed){ 
       // do whatever with reponse.data 
      } 
     }, 
     error: function(e){ 
      // Do whatever when error 
      console.log(e); 
     }, 
     complete: function(){ 
     // Always when finish request do again 
     setTimeout(checkupdate, 5); 

     } 
    }); 
} 

像Barmar說,你可以使用套接字,但不是最好的窪年。

+0

謝謝,我傾向於定期輪詢而不是websocket解決方案。幾個問題:我從另一個頁面傳遞val,爲什麼我需要它在這裏?而且,爲什麼我需要運行這個函數,如果它完成運行? – santa

+0

@santa,你不需要通過'val',僅僅是一個例子...我想你想檢查不斷的變化,如果你想只有你可以把'setTimeout'上'else'的第一個變化'如果(response.changed)'... – Carlos

相關問題