将变量从jQuery传递给PHP

时间:2013-04-01 10:43:28

标签: php javascript jquery

我创建了一个脚本来读取哈希值(www.website.com/#hash)并将哈希值传递给php。 alert(hash)弹出哈希值,但哈希值不会在post变量中回显。知道为什么吗?

jQuery页面

<script>
    var hash = location.hash;
    $.post("community.php", {
        hash: hash
    });
    alert(hash);
</script>

Community.php页面

<?php echo $_POST['hash']; ?>



  

修改 - 以下$ _GET原来是$ _POST以上。

我有一个foreach,它在一个函数中循环发布(发布ID)。我需要将HASH传递给函数并每次将其与发布ID进行比较。唯一的问题是,$ _GET ['hash']不会出现在函数内部。

function something() {
   echo $_GET['hash'];
}

5 个答案:

答案 0 :(得分:3)

像这样使用ajax,以hash

发送值
  function send_hash(hash) {
    $.ajax({
      url   : "community.php", 
      type  : "POST",
      cache : false,
      data  : {
        hash : hash
      }
    });
  }

现在你会得到

<?php echo $_POST['hash']; ?>

答案 1 :(得分:3)

<script>
    var hash = location.hash;
    $.post("community.php", {
        hash: hash
    }, function(responde){ alert(responde); });
</script>

检查你的PHP响应:)

答案 2 :(得分:2)

$ .post是一个ajax事件。您正在通过ajax发布数据,因此该页面不会转到communitypage.php。对于你想要的行为你必须做普通的表格发布而不是ajax发布。 $ .post将使用此代码检索您在communitypage.php上回显的任何内容。

//Note the 3rd argument is a callback.
var hash = location.hash;
$.post('communitypage.php',{hash:hash},function(data){
    alert(data);
});

在该页面上处理哈希并在找到哈希值时发出警告。你会在data

中找到回声

您可以修改communitypage.php以返回html,如下所示

<?php
if($isset($_POST["hash"]) && strlen(trim($_POST["hash"])) > 0){
    echo "Hash found :: " . $_POST["hash"]; 
}else
    echo "No hash found";
?>

注意这将返回html,您可以根据需要修改响应以返回xml,json。

有关详细信息,请参阅jQuery post() documentation

有关更新的问题

它在外面工作,因为在函数内部进行ajax调用时会调用它,因为函数没有被调用。如果你想这样做(我不知道为什么),你可以这样做。

function myfunction(){
    //your code goes here
}

myfunction(); //call the function so that the code in the function is called upon

虽然你想要在同一个脚本中反复调用该函数,但这是一种过度杀伤力。如果它没有功能,你应该这样做。

答案 3 :(得分:1)

  <script>
  var hash = location.hash;
   //Try this.
   window.location.href = 'community.php?val='+hash;
  </script>

OR

   <script>
   $.post("community.php","val="+hash);
   </script>

在community.php中

     $res=isset($_REQUEST['val'])?$_REQUEST['val']:'';

希望它会给你一些解决方案。

答案 4 :(得分:0)

但是哈希没有在后变量

中回显

这是因为如果你想在页面加载时发送它,那么你必须在doc ready处理程序中使用它:

<script>
  $(function(){
     var hash = location.hash;
     $.post("community.php", { hash: hash });
     alert(hash);
  });
</script>