2014-05-03 62 views
0

我正在研究ajax(native JavaScript)表單。我無法獲得推薦密鑰並將其發送到PHP後端。JavaScript/PHP:獲取推薦密鑰URL

的想法是,Ajax請求發送整個URL(與表單數據)作爲字符串PHP引擎。然後,我可以分解PHP中的URL並提取密鑰。

這是我到目前爲止有:

網頁網址:

http://example.com?ref=gr84r34ijg98g 

JS:

// Send the form data with the URL 
function getquerystring() { 

    var email = document.getElementById('email').value; 
    var URL = document.URL; 
    qstr = 'email=' + email + '& URL=' + URL; 
    return qstr; 
} 

然後,在我的PHP,我可以檢索的形式數據和網址:

$email = $_POST['email']; 
    $url = $_POST['URL']; 

我怎麼能那麼擊穿的URL,這樣我只在年底作爲字符串有代碼?我認爲我可以在發送它之前在JavaScript中分解URL,但我認爲使用PHP做這部分可​​能更容易。

像一個preg_match(),消除「http://example.com?ref=」可能會做。雖然不確定如何做到這一點。

+0

此鏈接可能會幫助你 http://www.php.net/manual/en/function.parse-url.php –

回答

1

是的,你可以在Javascript中獲得的ref

function getquerystring() { 
    var email = document.getElementById('email').value; 
    var URL = document.URL; 

    var URL_arr = URL.split('ref='); //<-- URL_arr[1] will give ref string 

    qstr = 'email=' + email + '&URL=' + URL; 
    return qstr; 
} 
+0

我剛剛在控制檯日誌測試中發現了這一點。 – user3143218

0
function getquerystring() { 

    var email = document.getElementById('email').value; 
    var URL = document.URL; 
    qstr = '?email=' + email + '& URL=' + URL; 
    return qstr; 
} 

試試這個。

$電子郵件= $ _GET [ '電子郵件']; $ url = $ _GET ['URL'];

0

有URL之前一個額外的空間..而且你應該encodeURIComponent方法編碼。更新此行

qstr = 'email=' + encodeURIComponent(email) + '&URL=' + encodeURIComponent(URL); 

而在PHP端

$url = url_decode($_POST['URL']); 
$email = url_decode($_POST['email']); 
0

我想你可以使用urldecodehttp://php.net/urldecode,看一下例子。 您可能需要刪除域名,但並不困難。

+0

這不是一個答案,url_decode php函數只是一種解碼字符串的方法,非檢索它。 – linuxatico

+0

確實如此,但URL已經用$ _GET ['URL']檢索。(其中btw導致@Ankit Aranya答案) – scanafri

0

試試這個:

var query = window.location.search.substring(1).split('&'); 
var ref = ''; 
$.each(query, function(i, v) { 
    v = v.split('='); 
    if (v[0] === 'ref') { 
     ref = v[1]; 
     return false; 
    } 
}); 
console.log(ref); 
0

爲什麼你不只是做在PHP(放置在一個頁眉以下(如果你希望它可以在所有頁面上工作),或者在index.php的頂部:

<?php 
$ref = (isset($_GET['ref']) && strlen($_GET['ref']) > 0) ? trim($_GET['ref']) : null; 
//Process what ever you wanted to process from the beginning if you had a referral code 
if(!is_null($ref)) { 
    // do your action 
} 
?> 

使用上述你並不需要任何類型的JavaScript。