获取包含#value的URL

时间:2015-07-29 04:42:04

标签: javascript php url dom post

我需要在#之后获取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>

请帮忙。

谢谢。

4 个答案:

答案 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);

FIDDLE

答案 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);

这应该做的工作