将变量从jQuery传递给PHP

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

jQuery页面

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

Community.php页面

  

编辑 – 下面的$ _GET最初是$ _POST以上。

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

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

$ .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,如下所示

  0){ echo "Hash found :: " . $_POST["hash"]; }else echo "No hash found"; ?> 

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

有关详细信息,请参阅jQuery post()文档 。

对于更新的问题

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

 function myfunction(){ //your code goes here } myfunction(); //call the function so that the code in the function is called upon 

虽然这是一种矫枉过正,除非你想在同一个脚本中反复调用该函数。 如果它在没有function的情况下工作,你应该这样做。

像这样使用ajax,以hashforms发送值

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

现在你会得到的

  
  

检查你的PHP响应:)

   

要么

   

在community.php中

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

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

但是在post变量中没有回显哈希

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