2012-03-27 94 views
1

所以这里是我的场景。我有一个页面,让我们使用“http://www.pearlsquirrel.com/listen.php?u=161”在页面加载它加载一个文件,ajaxlinklisten.php到我的listen.php页面通过ajax和jQuery的。在我的ajaxlinklisten.php页的我有以下代码:PHP无法通过ajax加载内容后获取url变量

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

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

回答

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 
    } 
}); 

这取决于你如何实现的脚本,但应该让你你在哪里需要去。

+0

如何然后我把这个ajax代码和PHP一起得到它吗?我使用的是我目前使用的相同函数吗? – Eggo 2012-03-27 21:32:33

+0

已更新我的回答 – 2012-03-27 21:36:30

+0

@DavidNguyen:您在JavaScript中错误地包含了GET参数请修复您的答案 – Tadeck 2012-03-28 07:25:44

1

您无法使用PHP并使用JavaScript URL解析器,下面是我想出的一个快速的解决方案(我确信您可以使用正则表达式来更好地实现这个)。

如果您的网址是 “www.example.com?foo=bar & U = 160,这个函数会返回一个对象{FOO:” 酒吧”,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; 
} 
+0

不要混淆全局命名空间。 – Tadeck 2012-03-28 07:28:33