我正在开发我的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秒内发生变化。
答案 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。