如何在AJAX站点中发送变量?

时间:2011-10-31 15:24:59

标签: php javascript ajax get

我创建了一个Ajax导航系统,但是当我想发送一个变量时,我遇到了一个问题。 我有像这样的index.php

<script src="navigation.js" type="text/javascript"></script> 
    <div id="pageContent"></div> 
    <a href="#page1">page1</a> 
<a href="#profile">profile</a>

这是navigation.js

$(document).ready(function(){
    checkURL();
    $('a').click(function (e){
        checkURL(this.hash);
    });
    setInterval("checkURL()",250);
});

var lasturl="";
function checkURL(hash)
{
    if(!hash) hash=window.location.hash;
    if(hash != lasturl)
    {
        lasturl=hash;
        loadPage(hash);
    }
}

function loadPage(url)
{
    url=url.replace('#','');
    $.ajax({
        type: "POST",
        url: "load_page.php",
        data: 'page='+url,
        dataType: "html",   
        success: function(msg){
            if(parseInt(msg)!=0)
            {
                $('#pageContent').html(msg);
            }
        }
    });
}

这是load_page.php页面:

<?php
    if(!$_POST['page']) die("0");
    $page = $_POST['page'];
    include('pages/'.$page.'.php');
?>

这就是问题:当我加载profile.php页面时,我希望通过GET看到值......例如:

<?php 
    $nome_utente = $_GET['user']; 
    if(!$_GET['user']) { 
        print 'Attention! You have to insert a username'; 
    } 
    else 
    { 
        print $nome_utente; 
    } 
?>

为此,我尝试更改index.php中的链接

<a href="#profile?user=test">profile</a>

但这不起作用,因为load_page.php找不到“profile?user = test.php”页面。 如何从index.php中的链接发送profile.php中的GET变量? 我要编辑JS或PHP代码吗?

1 个答案:

答案 0 :(得分:1)

混合get / post变量被认为是不好的做法,但很容易做到:

function loadPage(url) {
    url=url.replace('#','');
    $.ajax({
        type: "POST",
        url: "load_page.php?user=whatever_you_want_here",
                           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^---your 'get' query

另一个选项是将'user'参数添加到ajax数据行:

data: { page: url, user: whatever_you_want_here }

第一个会在$ _GET中提供'user',第二个会在$ _POST中提供它。