jQuery .load - параметры в URL - множественные, многозначные - PullRequest
1 голос
/ 04 октября 2011

Мои параметры извлекаются из HTML-кода и затем вставляются в jQuery .load request.

HTML-код:

<a href="#" class="employee">John Doe<span>Lead Web Developer</span></a>

Извлечение параметров из HTMLкод внутри .click:

        //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

        });

Но URL-адрес, который я вижу в FireBugвыглядит так:

http://host.loc/employee.php?FirstName=John&LastName=Doe&JobTitle=Lead

Как видите, используется только первое слово из var JobTitle.Почему?

Как я могу вставить многозначный параметр в URL?

Ответы [ 2 ]

3 голосов
/ 04 октября 2011

Я думаю, вам следует закодировать значение с помощью encodeURIComponent () , чтобы разрешить пробелы в строке запроса

    var JobTitle = $('span', this).html(); // Get Job Title 
    JobTitle = encodeURIComponent(JobTitle)
    console.log( JobTitle );  
1 голос
/ 04 октября 2011

Кодировать параметры.

Использовать 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 ));
    });
})
...