javascript
  • php
  • jquery
  • html
  • 2017-04-26 36 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=',以满足您的需求。

    相关问题