我需要在#之后获取URL的值。例如,在此网址中:http://url.com/index.php#33/1032。我只需要得到" 33/1032"但PHP似乎在#之后不允许任何值。所以我用了JS。我就是这样做的。
Customer cust = new Customer();
cust.user_id = 101;
cust.logged_in = true;
Account acc = new Account();
acc.status_code = 1;
acc.account_number = "cust1234";
acc.account_name = "jsmith";
acc.store_orders = true;
AccountPair accpair = new AccountPair();
accpair.key = 3;
accpair.value = acc;
cust.account_pairs.Add(accpair);
现在我有了url我需要在POST调用后再将URL 33/1032的这部分传回给url。我正在尝试这样做:
<script>
function curState(){
var state = window.location.hash.substr(1);
return document.write(state);
}
</script>
现在,
<?php
$copyVal = " <script> curState(); </script> ";
echo $copyVal; // displays value in browser perfectly
?>
提交后显示
<form action="index.php#<?php echo $copyVal ?>" method = "post" >
// form code
</form>
但我想要
http://url.com/index.php# <script> curState(); </script>
请帮忙。
谢谢。
答案 0 :(得分:1)
使用jQuery -
<form action="index.php" method = "post" id="myform" >
jQuery将是 -
var state = window.location.hash.substr(1);
$('#myform').attr('action', $('#myform').attr('action') + '#' + state);
答案 1 :(得分:0)
使用JavaScript代替PHP代码:
copyVal = curState();
copyVal = "index.php#"+copyVal;
function for_action()
{
document.getElementById('myForm').action = copyVal;
}
Now, In form tag:
<form id="myForm" onsubmit="for_action();" method = "post" >
答案 2 :(得分:0)
首先找出问题:
PHP是server side scripting language。服务器端脚本区别于客户端脚本,其中嵌入式脚本(如JavaScript)在Web浏览器中在客户端运行,但这两种技术通常一起使用。
因此,<?php
标记下的代码将首先在服务器端运行,并分别以HTML和/或JavaScript和/或CSS的形式提供输出。所以
<?php
$copyVal = " <script> curState(); </script> ";
echo $copyVal; // displays value in browser perfectly
?>
此代码将在服务器中运行,并首先将<script> curState(); </script>
指定为php变量 $ copyVal 中的字符串。其次,当您回显 $ copyVal 时,这将在您的源代码中输出<script> curState(); </script>
。
AS <script> curState(); </script>
是一个Javascript代码,因此curState();
函数调用您之前定义的javscript函数。在该功能上,您使用document.write
在浏览器中编写内容,以便在浏览器中看到输出。但是,如果您看到了网页的源代码,您仍然可以看到没有特定的哈希值,只有JavaScript代码[<script> curState(); </script>
]。
与在
中打印php变量 $ copyVal 时类似<form action="index.php#<?php echo $copyVal; ?>" method = "post" >
此变量输出JavaScript代码而不是任何哈希值。
其次,如何做到这一点?
您可以使用php或JavaScript以多种方式执行此操作。如果你想用php做这个,一个简单的方法是,首先parse_url你当前的网址。而不是获取片段值。像 -
$url=parse_url("http://url.com/index.php#33/1032");
echo $url["fragment"]; //This variable contains the fragment
如果您不确定,如何获取php中的当前网址,请参阅Get the full URL in PHP
答案 3 :(得分:0)
您可以使用链接并使用函数substr..it在特定符号后执行您想要的操作:
$id = substr($url, strrpos($url, '#') + 1);
这应该做的工作