我创建了一个脚本来读取哈希值(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'];
}
答案 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>