PHP通过ajax加载内容后无法获取url变量

时间:2012-03-27 21:26:31

标签: php jquery

所以这是我的情景。我有一个页面,让我们使用“http://www.pearlsquirrel.com/listen.php?u=161”在页面加载它通过ajax加载一个文件,ajaxlinklisten.php到我的listen.php页面上的div jQuery的。在我的ajaxlinklisten.php页面中,我有以下代码:

if (isset($_GET['u']));
{
$music3 = mysql_real_escape_string($_GET['u']);

但是,由于某种原因,ajaxlinklisten无法获取变量u,在这种情况下等于161.这个变量很重要,因为我用它来处理页面的其余部分。我不知道这是否是因为我使用jquery加载页面而引起的,但我需要找到一个解决方法。有谁知道如何解决这个问题?谢谢!

2 个答案:

答案 0 :(得分:1)

这是因为当您通过AJAX加载页面时,它没有获取变量,它将与原始负载分开处理。将数据传递给:

data: 'u=' + <?php echo $_GET['u']; ?>,

在您网页的ajax部分。

修改

我想你的ajax是这样的:

$.ajax({
   url: a_cross_domain_url,
   success: function(data){
      *do stuff
   }
});

添加更多

$.ajax({
   data: 'u=' + <?php echo $_GET['u']; ?>,
   type: GET,
   url: a_cross_domain_url,
   success: function(data){
      *do stuff
   }
});

这取决于你如何实现脚本,但这应该可以让你到达目的地。

答案 1 :(得分:1)

您无法使用PHP并使用javascript URL解析器,这是我提出的快速解决方案(我相信您可以使用正则表达式进行更好的实现)。

如果您的网址是“www.example.com?foo=bar&u=160,此函数将返回一个对象{foo:”bar“,u:”160“}。

function parseUrl()
{
    str = String(window.location);

    var vars = new Array();
    var cont = true;
    var name;
    var val;

    if (str.indexOf("?") > -1)
    {
        str = str.substring(str.indexOf("?") + 1);

        if (str.indexOf("#") > -1)
        {
            str = str.substring(0, str.indexOf("#"));
        }

        do
        {
            name = str.substring(0, str.indexOf("="));

            if (name !== "")
            {
                if (str.indexOf("&") > -1)
                {
                    val = str.substr(str.indexOf("=") + 1, str.indexOf("&") - str.indexOf("=") - 1);
                    str = str.substr(str.indexOf("&") + 1);
                }
                else
                {
                    val = str.substr(str.indexOf("=") + 1);
                    cont = false;
                }

                vars[name] = val.replace(/[+]/g, " ");
            }
            else
            {
                cont = false;
            }

        } while (cont);
    }

    return vars;
}