【问题标题】:auto reload 'php' in javascript在javascript中自动重新加载'php'
【发布时间】:2014-05-08 04:48:43
【问题描述】:

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

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

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

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

【问题讨论】:

  • 无法在客户端,重新加载页面或查看ajax
  • @halkujabra 我不确定你所说的更小的解决方案是什么意思,AJAX 没有那么复杂。
  • 不幸的是,没有更简单的解决方案。 PHP 在页面加载时呈现。如果你希望 Javascript 随服务器的变化而变化,你需要使用 Ajax 之类的东西。
  • Ajax 是最简单的方法。 PHP 标记无法在客户端呈现。不管你做什么,在这里都行不通。

标签: javascript php jquery laravel


【解决方案1】:
function abc(){
  $.ajax({url:"phpfile.php",success:function(result){
    $("div").html(result);
  }});
} 

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

使用 ajax 试试这个

【讨论】:

    【解决方案2】:

    这在没有 AJAX 的情况下是不可能的,因为 JavaScript 代码一旦加载到客户端浏览器上就是静态的。除非执行额外的脚本以异步覆盖这些值,否则这些值不会改变。

    【讨论】:

      【解决方案3】:

      在您使用 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 */ });
      }
      

      【讨论】:

        【解决方案4】:

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

        This is answer不是一个普遍的好方法,但它准确地回答了你的问题。我只是发布这个因为我不知道你的想法所以它可能对你有用。

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

        &lt;body onload="original_abc()"&gt;

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

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

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

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

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

        在某些非常特殊的情况下可能有用,但一般情况下,请使用 ajax。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-04-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-02-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多