Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/446.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有没有办法在JavaScript和PHP之间交换变量_Php_Javascript_Drupal_Variables_Userpoints - Fatal编程技术网

有没有办法在JavaScript和PHP之间交换变量

有没有办法在JavaScript和PHP之间交换变量,php,javascript,drupal,variables,userpoints,Php,Javascript,Drupal,Variables,Userpoints,我已经用Drupal建立了一个网站,我正试图通过建立一个用户点系统来创建一个有趣的方式让会员参与到这个网站中来,这个系统已经准备好了,但我正在尝试建立一个商店,让他们可以在那里购买“标题” 这是我为商店写的脚本,有一点错误处理,但我遇到了一个问题 在我的JavaScript中,我有一个带有两个变量的函数buyitem(),我想在我的PHP函数中使用它来检查数据库中的所有内容。有没有一种方法可以将这些变量从JavaScript获取到我编写的PHP函数,而不必访问外部PHP文件 <?php

我已经用Drupal建立了一个网站,我正试图通过建立一个用户点系统来创建一个有趣的方式让会员参与到这个网站中来,这个系统已经准备好了,但我正在尝试建立一个商店,让他们可以在那里购买“标题”

这是我为商店写的脚本,有一点错误处理,但我遇到了一个问题

在我的JavaScript中,我有一个带有两个变量的函数
buyitem()
,我想在我的PHP函数中使用它来检查数据库中的所有内容。有没有一种方法可以将这些变量从JavaScript获取到我编写的PHP函数,而不必访问外部PHP文件

<?php
    include "php-scripts/DBConnection.php";
    $con = getconnection();
    mysql_select_db("brokendi_BD", $con);
    
    
    function getKarma()
    {
           $result = mysql_query("SELECT * FROM userpoints WHERE uid='getUID()'");
           $row = mysql_fetch_array($result);
           $currentkarma = (int)$row['points'];
           
          return $currentkarma;
    }
    
    function getUID()
    {
         global $user;
         if ($user->uid) 
         { 
              $userID=$user->uid;
              return $userID;
         }
         else
        {
              header('Location: http://brokendiamond.org/?q=node/40');
        }
    }
    
    function hasRole($roleID)
    {
           $usersid = getUID();
           $returnValue = false;
           $result = mysql_query("SELECT * FROM users_roles");
           while ($row = mysql_fetch_array($result))
          { 
               if ($row['uid'] == $usersid)
               {
                      if ($row['rid'] == $roleID)
                      {
                              $returnValue = true;
                              break;
                      }
               }
          }
          return $returnValue;
    }
    
    function enoughKarma()
    {
            if ( getKarma() >= $requiredKarma)
            {
                     return true;
            }
            else
            {
                    return false;
            }      
    }
    
    function buyRole()
    {
           $currentKarma = getKarma();
           $newkarma = $currentKarma - $requiredKarma;
           $userID = getUID();
           mysql_query("UPDATE userpoints SET points = '$newkarma' WHERE uid='$userID'");
           mysql_query("INSERT INTO users_roles (uid, rid) VALUES ($userID, $roleID)");
    }
    ?>
    
    <script type="text/javascript">
    buyItem(1 , 0);
    function SetStore()
    {
    
    
    }
    
    Function buyItem(itemID,reqKarma)
    {
           if (<?php enoughKarma(); ?>)
           {
                 <?php buyRole(); ?>
           }
           else
           {
                alert('You do not have enough Karma to buy this title.');
           }
    }
    </script>

您可以重新加载页面(我怀疑这是您正在寻找的),也可以对发送2个变量的php脚本进行ajax调用

如果您使用的是jQuery,那么应该让您了解如何做到这一点

PHP是服务器端脚本,javascript是客户端,服务器端脚本在页面加载之前执行,这意味着您的javascript无法将变量传递给它,但您可以将PHP变量传递给js


在您的情况下,最好的解决方案是使用ajax将这些变量发送到php,并让php在这方面设置变量,这并不能完全解决您的问题,但通过代码中的一些创造性,您可以实现这一点。

我解决了一些不同的问题,但您的解决方案帮助了我,谢谢;)