1

我想在不重新加载页面的情况下更改 url,因为我使用 AJAX 函数重新加载 div。问题是当 AJAX 加载 div 时,它不读取 url 参数

我的代码(我已经加载了 jquery.js 等):

索引.php

<a href="#page=1" onClick='refresh()'> Link </a>
<a href="#page=2" onClick='refresh()'> Link2 </a>


<script type="text/javascript">

 $.ajaxSetup ({
    cache: false
 });

 function refresh() {

    $("#test").load("mypage.php"); //Refresh
}

</script>



<div id="test">

</div>

我的页面.php

 <?php 

 if (isset($_GET['page'])){

   $page = $_GET['page'];
 }
echo $page;

?>
4

4 回答 4

1

PHP 无法在不重新加载页面的情况下读取片段。这可以使用 JS 来完成。

在我用来读取参数值而不重新加载页面的脚本下方。我认为这不是最好的方法,因为有一些插件可以用来做同样的事情(甚至更多),但它确实有效。前段时间在网上找到的,可惜我不记得在哪里了:(

var urlParams;
(window.onpopstate = function () {
    var match,
        pl     = /\+/g,  // Regex for replacing addition symbol with a space
        search = /([^&=]+)=?([^&]*)/g,
        decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
        query  = window.location.hash.slice(1);
    urlParams = {};
    while (match = search.exec(query)) {
       urlParams[decode(match[1])] = decode(match[2]);
    }
})();

然后,您将通过以下方式获取参数值:

urlParams['page']

如果你会经常使用哈希 URL,你应该看看这个插件:http ://benalman.com/projects/jquery-bbq-plugin/

于 2013-07-26T13:50:25.130 回答
0

您需要将page参数传递给您请求的 URL。

尝试这个:

<a href="#page=1" onClick='refresh(1)'> Link </a>
<a href="#page=2" onClick='refresh(2)'> Link2 </a>


<script type="text/javascript">

 $.ajaxSetup ({
    cache: false
 });

 function refresh(pageNumber) {

    $("#test").load("mypage.php?page="+pageNumber); //Refresh
}

</script>
于 2013-07-26T13:35:32.417 回答
0

获取#哈希标签:

使用 PHP(需要加载页面)

你需要的 parse_url() fragment索引

$url = parse_url($_SERVER['REQUEST_URI']);
$url["fragment"]; //This variable contains the fragment

使用 jQuery:(不需要页面加载)

var hash = $(this).attr('href').split('#')[1];
var hash = $(this).attr('href').match(/#(.*$)/)[1];

演示(不带哈希标签使用)

索引.php

<a href="#" class="myLink" data-id="1"> Link </a> | <a href="#" class="myLink"  data-id="2"> Link2 </a>

<script type="text/javascript">
 $(".myLink").click(function(e) { // when click myLink class
    e.preventDefault(); // Do nothing
    var pageId = $(this).attr('data-id'); // get page id from setted data-id tag
    $.ajax({
        type:'POST',
        url:'mypage.php', // post to file
        data: { id: pageId}, // post data id
        success:function(response){ 
            $("#test").html(response); // write into div on success function
        }
    });
});
</script>

<div id="test"></div>

我的页面.php

<?php 
// get with $_POST['id']
echo "Loaded Page ID: ".($_POST['id'] ? $_POST['id'] : "FAILED");
?>
于 2013-07-26T13:36:56.407 回答
0

您可以通过jQuery 中的load()函数传递参数。

有两种常见的方法:

使用获取:

JS:

$('#test').load('mypage.php?page=mypage');

PHP:

<?php

if (isset($_GET['page']))
{
    $page = $_GET['page'];
}
echo $page;

?>

或使用数据作为帖子:

JS:

$('#test').load('mypage.php', { page: mypage });

PHP:

if (isset($_POST['page']))
{
    $page = $_POST['page'];
}
echo $page;

?>
于 2013-07-26T13:39:18.463 回答