2015-08-24 44 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

相关问题