我目前正在研究一些允许用户通过文本链接进行AJAX调用的jQuery。这没问题,但是文本链接有我需要发送给AJAX请求的参数才能正常执行。
我的文字链接如下所示:
<a href="?affiliate=one&voteType=two">Click here</a>
这是我的jQuery:
function getUrlParam(name)
{
name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
var regexS = "[\\?&]"+name+"=([^&#]*)";
var regex = new RegExp( regexS );
var results = regex.exec( window.location.href );
if( results == null )
return "";
else
return results[1];
}
/* Let's create a function that will allow us to vote on the hosts */
function hostVote() {
/* These variables are used to determine the button clicked */
var affiliate = getUrlParam('affiliate');
var voteType = getUrlParam('voteType');
$.ajax({
cache: false,
type: "POST",
url: "/php/hostvote.php",
data: "affilate=" + affiliate + "&voteType=" + voteType +"",
success: voteSubmitted
});
function voteSubmitted() {
alert('Thanks for voting');
$(this).addClass('yes');
}
return false;
};
$("a.vote").click(hostVote);
此代码的问题是我无法在执行函数之前提交链接以在网址中放置任何参数,从而导致空的affiliate和voteType vars。
有人可以帮忙吗?
答案 0 :(得分:2)
更好的方法是将所需数据存储在链接的data-*
属性中。这将使检索相应数据变得更加容易。这是一个如何工作的简单示例。
<a href="#" data-affiliate="one" data-voteType="two">Click here</a>
$("a.vote").click(function(e){
var affiliate = $(this).data('affiliate');
var voteType = $(this).data('voteType');
// do your ajax call here
e.preventDefault();
});
答案 1 :(得分:0)
而不是 -
var results = regex.exec( window.location.href );
你能做到吗?
var results = regex.exec($("a.vote").attr('href'));
直接从链接中解析变量?