2013-02-17 93 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 valuedocument.getElementById('popup1').innerHtml = itemID;

+0

究竟什麼是行不通的?你看過你的調試器嗎?難道,'#popup1'不存在嗎? – MCL 2013-02-17 18:58:45

回答

0

使用一個複雜的函數來獲取網址查詢參數:

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); 

工作小提琴:http://jsfiddle.net/ADpYT/

+0

好的,我把它扔到我的函數文件中,並試圖在這裏調用它。 echo'

'; 但它沒有做任何事情。 – user1888260 2013-02-17 18:32:28

+0

@ user1888260看看這個功能,我編輯它。示例呼叫也被編輯。編輯:對不起,你只需要通過鏈接本身。再次編輯。 – MCL 2013-02-17 18:35:29

+0

好吧,我想我想問什麼,我能做些什麼來在我的彈出式HTML內以文本格式返回該值? – user1888260 2013-02-17 18:46:37

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 2013-02-17 19:06:01