2013-02-17 5 views
0

Я пытаюсь получить переменную PHP для отправки через javascript, и у меня возникают проблемы. Я использую всплывающее окно jQuery, которое я нашел онлайн, и когда пользователь нажимает элемент, мне нужно, чтобы переменная item_id была выбрана во всплывающем окне, где я хочу добавить форму.Извлечь переменную в javascript из ссылки

Мой раздел PHP.

<a href="#?w=500&item_id='.$stock['id'].'" rel="popup1" class="poplight"> 

и Javascript.

$(document).ready(function(){ 

    //When you click on a link with class of poplight and the href starts with a # 
    $('a.poplight[href^=#]').click(function() { 
     var popID = $(this).attr('rel'); //Get Popup Name 
     var popURL = $(this).attr('href'); //Get Popup href to define size 

     //Pull Query & Variables from href URL 
     var query= popURL.split('?'); 
     var dim= query[1].split('&'); 
     var popWidth = dim[0].split('=')[1]; //Gets the first query string value 
     var itemID = dim[0].split('=')[2]; //Gets the second query string value 

     //Fade in the Popup and add close button 
     $('#' + popID).fadeIn().css({ 'width': Number(popWidth) }).prepend('<a href="#" class="close"><img src="/layout/close_pop.png" class="btn_close" title="Close Window" alt="Close" /></a>'); 

     //Define margin for center alignment (vertical + horizontal) - we add 80 to the height/width to accomodate for the padding + border width defined in the css 
     var popMargTop = ($('#' + popID).height() + 80)/2; 
     var popMargLeft = ($('#' + popID).width() + 80)/2; 

     document.getElementById('popup1').innerHtml = itemID; 

     //Apply Margin to Popup 
     $('#' + popID).css({ 
      'margin-top' : -popMargTop, 
      'margin-left' : -popMargLeft 
     }); 

     //Fade in Background 
     $('body').append('<div id="fade"></div>'); //Add the fade layer to bottom of the body tag. 
     $('#fade').css({'filter' : 'alpha(opacity=80)'}).fadeIn(); //Fade in the fade layer 

     return false; 
    }); 


    //Close Popups and Fade Layer 
    $('a.close, #fade').live('click', function() { //When clicking on the close or fade layer... 
     $('#fade , .popup_block').fadeOut(function() { 
      $('#fade, a.close').remove(); 
    }); //fade them both out 

     return false; 
    }); 


}); 

Я добавил, что я думал, что вы работаете, но это не var itemID = dim[0].split('=')[2]; //Gets the second query string value и document.getElementById('popup1').innerHtml = itemID;

+0

Что именно не работает? Вы посмотрели на свой отладчик? Может быть, что '# popup1' не существует? – MCL

ответ

0

Используйте сложные функции для получения параметров URL запроса:

function getParameterByName(name, locationObject) 
{ 
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]"); 
    var regexS = "[\\?&]" + name + "=([^&#]*)"; 
    var regex = new RegExp(regexS); 
    var results = regex.exec(locationObject.search); 
    if(results == null) 
    return ""; 
    else 
    return decodeURIComponent(results[1].replace(/\+/g, " ")); 
} 

[Принято от here]

Просто назовите его так:

getParameterByName('item_id', someLink); 

Рабочая Fiddle: http://jsfiddle.net/ADpYT/

+0

Хорошо, я бросил это в свой файл функций и попытался назвать его здесь. echo '

'; Но это ничего не делало. – user1888260

+0

@ user1888260 Посмотрите на функцию, я ее отредактировал. Пример вызова также редактируется. EDIT: Извините, вам просто нужно передать ссылку. Отредактировано снова. – MCL

+0

Хорошо, я думаю, что я пытаюсь спросить, что я могу сделать, чтобы вернуть это значение в текстовом формате внутри моего popup HTML? – user1888260

0

У вас есть простой контроль в исходном коде .. Когда вы получаете вашу dim переменную, вы получите массив с 2 пунктов разделить на &. В приведенном выше коде вы получаете ["w=500", "item_id=some_value"]. Так что, чтобы получить ItemID, вы должны использовать dim [1]. var itemID=dim[1].split('=')[1];

+0

Ах спасибо, я получил его, чтобы добавить к всплывающему окну. например \t \t $ ('# popup1'). append (itemID); Но мне это действительно нужно, чтобы быть в форме. Может быть, я могу добавить форму до конца? – user1888260

Смежные вопросы