2012-03-27 101 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