0

我试图提取链接中包含的单个 $_GET 变量的值。

所以html看起来像:

<div class="news_item"><a href="http://example.com/?p=51">Title</a></div>

我正在尝试使用 JS 从这个 url 中提取“51”:

<script>
        function GetURLParameter(sParam, URL) {
            var sURLVariables = URL.split('&');
            for (var i = 0; i < sURLVariables.length; i++) 
            {
                var sParameterName = sURLVariables[i].split('=');
                if (sParameterName[0] == sParam) 
                {
                    return sParameterName[1];
                }
            }
         };

        $('.news_item a').click(function(e) {
            e.preventDefault();
            var URL = $(this).val('href');
            var sParam = 'p';
            var ID = GetURLParameter(sParam, URL);
            alert(ID);
        });


    </script>

当我单击链接时,我收到以下错误:Uncaught TypeError: Object [object Object] has no method 'split' 任何想法发生了什么?我无法弄清楚我做错了什么..

4

4 回答 4

0

我认为$(this).attr('href')会解决您的问题,但请考虑以下事项:

 var params = [];
 $(this).attr('href').replace(/[?&]+([^=&]+)=([^&]*)/gi, function(match, key, value) {
    params[key] = value;
 });

 if (params.Something) {
     // ... it's set.
 }
于 2012-07-18T20:32:01.463 回答
0

试试 - http://jsfiddle.net/6W4Rw/

$("a").on("click", function(e) {
    e.preventDefault();
    alert( $(this).attr("href").split("=")[1] );
});
于 2012-07-18T20:32:17.640 回答
0

你能用PHP吗?如果是这样,它就像

<script>
 var val = "<?php print $_GET['p']; ?>
</script>
于 2012-07-18T20:39:55.807 回答
0

很多答案告诉您使用 attr 而不是 val - 返回值仍然未定义,因为您没有充分拆分字符串以仅包含查询参数。您最终会检查“p”是否===“http://example.com/?p”。

Don't forget to split off the non-query portion of the url.

于 2012-07-18T20:47:02.363 回答