php内部的javascript无法正常工作

时间:2015-09-06 13:56:50

标签: javascript php

我在javasript里面有一个用于循环代码的PHP代码,问题是php代码运行一次,即使循环多次运行

这是我的代码

<script>
   function myFunction() {
    var j,i,k,x=[];
      <?php $k=0; ?>; 
 <?php $faculys= App\faculty::all();
    $i=0;

    foreach($faculys as $faculty)
    {
      $array[]=$faculty->name;
      $i++;
    }

     ?>;
      i= <?php echo $i; ?>;
for(j=0; j<i; j++)
      {


       x[j]='<?php  echo $array[$k];  ?>';
       <?php $k++; ?>;

      }

  k= <?php echo $k; ?>;
</script>

$ k和k的结果总是一个我的错误。

2 个答案:

答案 0 :(得分:4)

Javascript是客户端语言。 PHP是服务器端。这意味着尽管将两者混合在一起并非不可能,但您需要非常小心这样做。

例如:

基础理论

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes: (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

将在您的页面中显示如下,因为服务器解释了PHP,然后发送到浏览器:

<script>
    function myFunc(){
        <?php echo "console.log('test');"; ?>
    }
</script>

Javascript中的PHP循环

另一个例子,这里是JavaScript中的PHP循环:

<script>
    function myFunc(){
        console.log('test');
    }
</script>

将呈现为:

<script>
    function myFunc(){
        <?php for($i = 0; $ <10; $i++){
                echo "console.log('test');"; 
            }
        ?>
    }
</script>

使用PHP内部的Javascript循环

与上面相同的理论 - 一个javascript循环,但PHP内容:

<script>
    function myFunc(){
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
        console.log('test');
    }
</script>

这实际上会导致:

<script>
    function myFunc(){
        for (i = 0; i < 10; i++) { 
          <?php echo "console.log('" . date('Y-m-d H:i:s') . "');"; ?>
        }
    }
</script>

注意:这是一个有趣的问题,因为PHP <script> function myFunc(){ for (i = 0; i < 10; i++) { console.log('2015-09-06 18:40:15'); } } </script> 函数会在服务器执行时吐出当前的日期戳。在此上下文中使用它将产生脚本在服务器上执行时的日期戳,而不是在调用函数时。这意味着如果您在特定事件发生后因任何原因调用此函数(即按某个按钮),则日期戳仍将是PHP输出的日期戳 - 而不是当前日期戳。

将PHP变量传递给Javascript

在某些情况下,您可以将PHP变量传递给JavaScript,但是您需要让JS处理它以用于其他任何您想要用它做的事情:

date()

假设<script> function myFunc(){ var x = <?php echo $somevar; ?>; .. JS code .. } </script> 是数据库中的ID。你有一些PHP来提取它(假设在这种情况下它会是15)并因此呈现为:

$somevar

不幸的是,你想要的东西永远不会奏效。使用AJAX可能是一种可能获得所需行为的方法。

答案 1 :(得分:0)

考虑以下文件(让我们称之为“somewhere.com/helloworld.php”):

<html>
    <head>
        <title>hello world</title>
    </head>
    <body>
        <script>
        <?php $i = 0; ?>
        for (var i = 0; i < 3; i++) {
            alert(<?php echo $i; ?>);
            <?php $i++; ?>
        }
        </script>
    </body>
</html>

以下是查找和计算此文档的故事(大致):

  1. 您在浏览器的地址栏中输入“somewhere.com/helloworld.php”。
  2. 您的个人计算机(PC)要求将文档发送到远程计算机(RC)。
  3. RC 找到文档,计算每个PHP标记

    • 此操作称为“预处理”。
    • 请注意,“PHP”用于“Hypertext PreProcessor”。
    • 一旦“预处理”,文档如下所示:

      <html>
          <head>
              <title>hello world</title>
          </head>
          <body>
              <script>
              for (var i = 0; i < 3; i++) {
                  alert(0);
              }
              </script>
          </body>
      </html>
      
  4. RC将文档提供给您的PC。
  5. 您的电脑会将文档提供给您的浏览器。
  6. 您的浏览器会解析HTML标记。
  7. 找到脚本标记后,将执行其内容。
  8. 最终结果:alert(0)三次。