javascript
  • php
  • jquery
  • html
  • 2017-04-26 70 views -1 likes 
    -1

    我正在嘗試將頁面系統設置爲我的項目。使用輸入值並將其插入到窗體動作

    我的目標是當有人在輸入時鍵入一個數字並按下回車鍵時,頁面將隨着所選頁面的刷新而刷新。

    這是我的代碼的一部分:

    <?php 
    if ($page>1) 
        echo "</b><a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page-1)."'> < Anterior</a> "; 
        ?> 
    

    我得到一個無法定義的變量來這裏nrpng

    <form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $_POST['nrpng'];?>" method="post"> 
    <input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>"> 
        </form> 
    

    的其餘代碼:

    <?php if ($page<$total_pages) 
        echo " <a class='btn btn-primary' style='background: #384452' href='read_topic.php?id=".$id."&page=".($page+1)."'>Próxima ></a>"; 
    ?> 
    
    +1

    在JavaScript中改變位置就像'location ='someURL.php?prop1 = val1''一樣簡單。 – PHPglue

    +0

    '$ _POST ['nrpng']'不會在第一次加載時存在,它只會在表單發佈之後才存在 – nogad

    +0

    @PHPglue請你多解釋一下,我在這裏有點新鮮。 –

    回答

    1

    阿馬羅,

    看,問題喲這裏是你在第一次加載頁面或選擇'下一個'或'上一個'鏈接時未設置$ _POST變量。

    所以,你需要做的是初始化值,以便能夠處理這些情況下,你應該這樣做:

    <?php 
    $nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : ''); 
    
    //further down in your code 
    <form action="read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng;?>" method="post"> 
    

    不過,我建議你把那些變量使用'隱藏「字段,而不是通過表單的」操作「,更重要的是,如果您使用方法」POST「,並且通常更優雅。

    希望這個解決您的問題

    將帖子

    看着你寫了上面的問題是什麼,我想你的形式是如何工作的誤解。讓我幫忙:

    當用戶在寫入數字後輸入時,表單中的'input'將被傳遞給服務器。因此,您不需要編輯要傳遞的表單的操作。例如:

    <form action="read_topic.php" method="post"> 
    <input type="number" name="nrpng" style="width:67px; line-height: 2em; text-align:center;" min="1" max="<?php echo $total_pages; ?>" value="<?php echo $page; ?>"> 
    <input type="hidden" name="id" id="id" value="<?php echo $id; ?> 
    </form> 
    

    這應該足以讓您在「read_topic.php」腳本運行時獲得所需的信息。

    然後在該腳本中,您可以使用$ _POST變量設置以下變量:'id','nrpng',並且可以執行呈現該頁面所需的邏輯。

    但是,您需要記住初始化這些變量的值以防止第一次加載時出現錯誤。

    +0

    我明白你的意思,但是當我使用這段代碼時,它將我重定向到這個鏈接: - read_topic.php?id = 1&page = **空白** 我打算做一些測試,我會看看它是否可以工作 –

    +1

    我'已經編輯了答案,看一看 –

    +0

    感謝您有時間寫出這個偉大的答案,但我想我已經與您之前寫的內容達成了結論,但無論如何都要感謝您。 –

    0

    我終於得出了一個結論,感謝我的幫助我阿圖羅(當然還有人們的其餘部分)

    我所做的就是這是什麼:

    <form action="read_topic.php?id=<?php echo $id;?>" method="post"> 
    
    $nrpng = (isset($_POST['nrpng']) ? $_POST['nrpng'] : ''); 
    if (!empty($nrpng)){ ?> 
        <script> window.location = "read_topic.php?id=<?php echo $id;?>&page=<?php echo $nrpng; ?>";</script> 
    
         <?php exit(); 
        } 
    ?> 
    

    每次這樣的POST提交它重定向到該頁面並退出。

    別擔心我已經制定了負值,最大值和最小值!

    1

    也許你想是這樣的:

    //<![CDATA[ 
     
    // external.js 
     
    var doc, bod, htm, post, C, E, T; // for use on other loads 
     
    addEventListener('load', function(){ // load start 
     
    
     
    // I threw in a few goodies to study - it will help you later 
     
    doc = document; bod = doc.body; htm = doc.documentElement; 
     
    function phpEncode(obj){ 
     
        var r = []; 
     
        if(obj instanceof Array){ 
     
        for(var i=0,l=obj.length; i<l; i++){ 
     
         r.push(phpEncode(obj[i])); 
     
        } 
     
        return '%5B'+r.join(',')+'%5D'; 
     
        } 
     
        else if(typeof obj === 'object' && obj){ 
     
        for(var i in obj){ 
     
         if(obj.hasOwnProperty(i)){ 
     
         var v = obj[i], s; 
     
         if(typeof v === 'object' && v){ 
     
          s = encodeURIComponent('"'+i.replace('"', '\\"')+'":')+phpEncode(v); 
     
         } 
     
         else{ 
     
          v = typeof v === 'string' ? '"'+v.replace('"', '\"')+'"' : v; 
     
          s = encodeURIComponent('"'+i.replace('"', '\\"')+'":'+v); 
     
         } 
     
         r.push(s); 
     
         } 
     
        } 
     
        return '%7B'+r.join(',')+'%7D'; 
     
        } 
     
        else{ 
     
        r = typeof obj === 'string' ? '"'+obj.replace('"', '\\"')+'"' : obj; 
     
        return ''+r; 
     
        } 
     
    } 
     
    function phpAccept(url){ 
     
        return eval('('+decodeURIComponent(url)+')'); 
     
    } 
     
    post = function(send, where, success, context){ 
     
        var x = new XMLHttpRequest; 
     
        var c = context || this; 
     
        x.open('POST', where); x.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); 
     
        x.onreadystatechange = function(){ 
     
        if(x.readyState === 4 && x.status === 200){ 
     
         if(success)success.call(c, phpAccept(x.responseText)); 
     
        } 
     
        } 
     
        if(typeof send === 'object' && send && !(send instanceof Array)){ 
     
        if(send instanceof FormData){ 
     
         x.send(send); 
     
        } 
     
        else{ 
     
         var r = []; 
     
         for(var p in send){ 
     
         r.push(encodeURIComponent(p)+'='+phpEncode(send[p])); 
     
         } 
     
         x.send(r.join('&')); 
     
        } 
     
        } 
     
        else{ 
     
        throw new Error('send must be an Object'); 
     
        } 
     
        return x; 
     
    } 
     
    C = function(tag){ 
     
        return doc.createElement(tag); 
     
    } 
     
    E = function(id){ 
     
        return doc.getElementById(id); 
     
    } 
     
    T = function(tag){ // returns an Array of Elements by tag name 
     
        return doc.getElementsByTagName(tag); 
     
    } 
     
    E('form').addEventListener('submit', function(ev){ 
     
        ev.preventDefault(); 
     
    }); 
     
    var page = E('page'), err = E('error'); 
     
    var pr = 'Positive Integer Required'; 
     
    function gF(){ 
     
        var val = page.value; 
     
        if(val.match(/\d+/)){ 
     
        location = 'yourPageHere.php?page='+val; 
     
        } 
     
        else{ 
     
        err.innerHTML = pr; 
     
        } 
     
    } 
     
    E('go').addEventListener('click', gF); 
     
    page.addEventListener('keydown', function(ev){ 
     
        if(ev.keyCode === 13)gF(); 
     
    }); 
     
    page.addEventListener('keyup', function(){ 
     
        err.innerHTML = page.value.match(/^[1-9]+[0-9]*$/) ? '' : pr; 
     
    }); 
     
    
     
    }); // end load
    /* external.css */ 
     
    html,body{ 
     
        padding:0; margin:0; 
     
    } 
     
    .main{ 
     
        width:980px; margin:0 auto; 
     
    } 
     
    #contain{ 
     
        width:116px; background:#070; color:#fff; padding:10px; 
     
    } 
     
    #contain>label{ 
     
        display:block; float:left; width:40px; 
     
    } 
     
    #page{ 
     
        width:30px; float:left; 
     
    } 
     
    #go{ 
     
        display:block; width:40px; margin:0 auto; 
     
    } 
     
    #error{ 
     
        width:136px; color:#900; text-align:center; 
     
    }
    <!DOCTYPE html> 
     
    <html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'> 
     
        <head> 
     
        <meta http-equiv='content-type' content='text/html;charset=utf-8' /> 
     
        <link type='text/css' rel='stylesheet' href='external.css' /> 
     
        <script type='text/javascript' src='external.js'></script> 
     
        </head> 
     
    <body> 
     
        <div class='main'> 
     
        <form id='form'> 
     
         <div id='contain'> 
     
         <label for='page'>Page:</label><input id='page' name='page' type='text' value='1' /> 
     
         <input type='button' id='go' value='GO' /> 
     
         </div> 
     
        </form> 
     
        <div id='error'></div> 
     
        </div> 
     
    </body> 
     
    </html>

    當然,你應該改變'yourPageHere.php?page=',以滿足您的需求。

    相關問題