javascript
  • php
  • query-string
  • 2014-04-02 47 views 0 likes 
    0

    我使用GET從我的網址如檢索查詢字符串:通行證GET變量的JavaScript

    index.php?page=quiz 
    

    然後,我要運行它使用JS在這種情況下page=值(我的功能getPage這是quiz

    所以我有隻運行如果page具有價值的onload事件功能:

    <body 
        <?php 
         if(!empty($_GET["page"])){ 
          //echo "onload='runPage(" . $_GET["page"] . ")'"; 
          echo "onload='runPage()'"; 
         } 
        ?> 
    > 
    

    這基本上w ^獸人出來爲:

    <body onload="runPage(quiz)"> 
    

    我想在這種情況下,通過quizrunPage函數,這樣我可以在它使用它。例如對於:

    function runPage(this){ 
        var page = this; 
        console.log("Page = " + page); 
    } 
    

    但這只是拋出一個錯誤說quiz是不確定的......這裏是我的邏輯錯了嗎?

    編輯:所以,我已經更新了我的代碼,我現在越來越:

    <body onload='runPage("quiz")'> 
    

    但現在我要採取「問答」,並將它傳遞給這個函數:

    function runPage(){ 
    // run stuff in here using the value of that variable e.g: 
    console.log("You've come through from the URL with quiz on the end"); 
    } 
    
    +0

    HTTP 「頁=測驗?」://計算器。com/questions/5448545/how-to-retrieve-get-parameters-from-javascript –

    +0

    你會在window.location.search中找到你的GET變量 –

    +2

    測驗是一個未定義的var,你應該將它作爲字符串傳遞: ' – Morrisda

    回答

    0

    您需要把變量放在那裏。對於一個內嵌的事件處理程序,這是一個有點麻煩:

    <body <?php 
        if(!empty($_GET['page'])) { 
        echo 'onLoad="runPage('.htmlspecialchars(json_encode($_GET['page'])).');"'; 
        } 
    ?> > 
    

    通常情況下,你可以使用json_encode從PHP傳遞變量給JavaScript在安全,XSS-證明方式。但是,因爲您處於內聯事件處理程序中,所以還需要使用htmlspecialchars以確保它不會破壞HTML上下文(否則這可能是另一個XSS向量)。

    -2
    function runPage(){ 
        var page = '<?php echo $_GET['page']?>'; 
        if(page!=''){ 
        console.log("Page = " + page); 
        }  
    } 
    
    +1

    請解釋你發佈的代碼 - 不要只發布一段代碼! –

    +0

    我把它留給你做 –

    +0

    它更好地編輯答案,只要你喜歡,而不是downvote。 –

    0

    您需要將您的字符串用引號引起來。因爲你已經嵌套在PHP代碼的報價,你需要逃避他們是這樣的:

    echo "onload='runPage(\"" . $_GET["page"] . "\")'"; 
    

    要小心,雖然。這對腳本注入很敏感。至少你需要清理$_GET['page']的內容。然後

    你的JavaScript函數變爲:

    function runPage(page){ 
        console.log("Page = " + page); 
    } 
    

    注意this是一個關鍵詞,並在JavaScript中的特殊含義。無論如何你不需要它 - 只需使用一個不同的變量名。

    +1

    如果我設置了炸彈併發送給你http://example.com/index.php?page=「); alert(」你所有的基地都屬於我們「)會發生什麼? –

    +0

    JSinjection RUN! – Brovoker

    +0

    OK,所以我嘗試了這個,但是我不明白如何從onload獲得這個值(「thisvaluehere」)並且能夠在函數中使用它 – user1486133

    0

    location.search回覆一個網址的查詢部分


    網址:index.php頁面=測驗


    location.search =

    +0

    這裏不是什麼問題......無可否認,問題是尷尬的措辭,但你應該注意^ _ ^ –

    相關問題