我的参数是从HTML代码中提取的,而不是粘贴到jQuery .load request
。
Html代码:
<a href="#" class="employee">John Doe<span>Lead Web Developer</span></a>
从.click
内的html代码中提取参数:
//Create href + params from name + params from title
var substr = ( $(this).html() ).split('<span>')[0].split(' '); // Get First & Last Name
var JobTitle = $('span', this).html(); // Get Job Title
console.log( JobTitle );
// console log will be multivalue (e.g "Lead Web Developer")
带有参数的jQuery .load请求
$('.popUp').load("employee.php?FirstName=" + substr[0]+"&LastName=" + substr[1] + "&JobTitle=" + JobTitle, function(){
// Do Stuff When Done
});
但是,我在FireBug中看到的URL看起来像这样:
http://host.loc/employee.php?FirstName=John&LastName=Doe&JobTitle=Lead
<小时/> 如您所见,只使用
var JobTitle
中的第一个单词。为什么呢?
如何在网址中过去多值参数?
答案 0 :(得分:3)
我认为您应该使用encodeURIComponent()对值进行编码,以允许查询字符串中的空格
var JobTitle = $('span', this).html(); // Get Job Title
JobTitle = encodeURIComponent(JobTitle)
console.log( JobTitle );
答案 1 :(得分:1)
对params进行编码。
使用可以为您处理的http://api.jquery.com/jQuery.param/。
示例 -
$(document).ready(function(){
$('a').click(function(e){
e.preventDefault();
var substr = $(this).html().split('<span>')[0].split(' ');
var JobTitle = $('span', this).html();
var params = {
FirstName: substr[0],
LastName: substr[1],
JobTitle: JobTitle
};
alert($.param(params ));
});
})