我正在开发一个ajax(本机JavaScript)表单。我无法获取推荐密钥并将其发送到PHP后端。
这个想法是ajax请求将整个URL(带有表单数据)作为字符串发送到PHP引擎。然后,我可以在PHP中分解URL并提取密钥。
这是我到目前为止所做的:
Page 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中,我可以检索表单数据和url:
$email = $_POST['email'];
$url = $_POST['URL'];
我怎样才能分解URL,因为我只将代码作为字符串结尾?我以为我可以在发送之前在JavaScript中分解URL,尽管我认为用PHP做这部分可能更容易。
可能会删除“http://example.com?ref=”的preg_match()
之类的内容。虽然不太确定如何做到这一点。
答案 0 :(得分: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;
}
答案 1 :(得分:0)
function getquerystring() {
var email = document.getElementById('email').value;
var URL = document.URL;
qstr = '?email=' + email + '& URL=' + URL;
return qstr;
}
试试这个。
$ email = $ _GET [&#39; email&#39;]; $ url = $ _GET [&#39;网址&#39;];
答案 2 :(得分:0)
在URL之前有一个额外的空格..你应该用encodeURIComponent对它进行编码。更新此行
qstr = 'email=' + encodeURIComponent(email) + '&URL=' + encodeURIComponent(URL);
在php端
$url = url_decode($_POST['URL']);
$email = url_decode($_POST['email']);
答案 3 :(得分: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);
答案 4 :(得分: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。