自动重新加载' php'在javascript中

时间:2014-05-08 04:48:44

标签: javascript php jquery laravel

我正在开发我的laravel应用程序。我在javascript中有这个功能 -

function abc(){
   var x = '<?php ($user && ($user->first_name == "" || $user->number == "")) ?>';
}

现在,加载页面时,变量'x'加载了'1''0'我希望每次调用函数abc()时都会呈现php。所以,例如,在页面加载时'x''1'但如果在页面加载20秒后调用该函数,我想要渲染php,< strong>这样,'x'的值可以根据服务器上发生的变化在20秒内发生变化。

是的,我知道ajax。我在问是否有一些更简单的解决方案。

4 个答案:

答案 0 :(得分:1)

function abc(){
  $.ajax({url:"phpfile.php",success:function(result){
    $("div").html(result);
  }});
} 

setTimeout(function(){ abc(); },20000);

使用ajax

尝试此操作

答案 1 :(得分:1)

如果没有AJAX,这是不可能的,因为JavaScript代码在客户端浏览器上加载后是静态的。除非执行附加脚本以异步覆盖这些值,否则这些值不会更改。

答案 2 :(得分:0)

当您使用Laravel时,请查看设置路线以返回您正在寻找的值。这里有很多例子:http://laravel.com/docs/routing。您的示例是指用户,请查看RESTful控制器上的此文档,因为示例中特别是UserController。 http://laravel.com/docs/controllers#restful-controllers

这样的东西可以让你在PHP端获取所需的数据(我假设你正在检查用户是否已经初始化):

class UserController extends BaseController {
    /* other controller logic above here.. */

    public function getInitStatus($id)
    {
        $user = /* Whatever code you get the user with based on ID */
        return Response::json($user && ($user->first_name == "" || $user->number == "");
    }

}

然后设置如下路线:

Route::controller('users', 'UserController');

现在您已经在服务器端设置了,有很多方法可以在JS中调用它(例如http://api.jquery.com/jquery.getjson/)。

function abc() {
    $.getJSON( "/users/" + userID, function( x ) { /* do whatever you were going to do with x */ });
}

答案 3 :(得分:0)

Ajax是要走的路。请查看其他答案。

这个答案不是一般的好方法,但它会回答你完全提出的问题。我只是发布了这个原因,我不知道你的想法,所以它可能对你有用。

首先将你的js函数放在body的onload中并稍微更改名称

<body onload="original_abc()">

然后相应地更改你的js函数名

function original_abc(){
    var x = '<?php ($user && ($user->first_name == "" || $user->number == "")) ?>';
}

现在将其与原始函数的名称一起使用

function abc()
{
    location.reload();
}

因此,每次调用abc()页面都会重新加载,函数original_abc将会执行。

在某些非常具体的案例中可能很有用,但一般来说,使用 ajax。