热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java-thinkphp中U方法如何传一个动态值为参数?

例如{代码...}如何获取input文本框的值并放入a标签的参数里。前提是在thinkphp的U方法里
例如


搜索

如何获取input文本框的值并放入a标签的参数里。
前提是在thinkphp的U方法里

回复内容:

例如


搜索

如何获取input文本框的值并放入a标签的参数里。
前提是在thinkphp的U方法里

参照 oneThink 中对一些数据的处理

1.在页面先初始化各全局 js 变量

(function(){
        var ThinkPHP = window.Think = {
            "ROOT"   : "", //当前网站地址
            "APP"    : "/index.php", //当前项目地址
            "PUBLIC" : "/Public", //项目公共目录地址
            "DEEP"   : "{:C('URL_PATHINFO_DEPR')}", //PATHINFO分割符
            "MODEL"  : ["{:C('URL_MODEL')}", "{:C('URL_CASE_INSENSITIVE')}", "{:C('URL_HTML_SUFFIX')}"],
            "VAR"    : ["{:C('VAR_MODULE')}", "{:C('VAR_CONTROLLER')}", "{:C('VAR_ACTION')}"]
        }
})();

2.封装各种处理方法 Think.js

/* 扩展ThinkPHP对象 */
(function($){
    /**
     * 获取ThinkPHP基础配置
     * @type {object}
     */
    var ThinkPHP = window.Think;

    /* 基础对象检测 */
    ThinkPHP || $.error("ThinkPHP基础配置没有正确加载!");

    /**
     * 解析URL
     * @param  {string} url 被解析的URL
     * @return {object}     解析后的数据
     */
    ThinkPHP.parse_url = function(url){
        var parse = url.match(/^(?:([a-z]+):\/\/)?([\w-]+(?:\.[\w-]+)+)?(?::(\d+))?([\w-\/]+)?(?:\?((?:\w+=[^#&=\/]*)?(?:&\w+=[^#&=\/]*)*))?(?:#([\w-]+))?$/i);
        parse || $.error("url格式不正确!");
        return {
            "scheme"   : parse[1],
            "host"     : parse[2],
            "port"     : parse[3],
            "path"     : parse[4],
            "query"    : parse[5],
            "fragment" : parse[6]
        };
    }

    ThinkPHP.parse_str = function(str){
        var value = str.split("&"), vars = {}, param;
        for(val in value){
            param = value[val].split("=");
            vars[param[0]] = param[1];
        }
        return vars;
    }

    ThinkPHP.parse_name = function(name, type){
        if(type){
            /* 下划线转驼峰 */
            name.replace(/_([a-z])/g, function($0, $1){
                return $1.toUpperCase();
            });

            /* 首字母大写 */
            name.replace(/[a-z]/, function($0){
                return $0.toUpperCase();
            });
        } else {
            /* 大写字母转小写 */
            name = name.replace(/[A-Z]/g, function($0){
                return "_" + $0.toLowerCase();
            });

            /* 去掉首字符的下划线 */
            if(0 === name.indexOf("_")){
                name = name.substr(1);
            }
        }
        return name;
    }

    //scheme://host:port/path?query#fragment
    ThinkPHP.U = function(url, vars, suffix){
        var info = this.parse_url(url), path = [], param = {}, reg;

        /* 验证info */
        info.path || $.error("url格式错误!");
        url = info.path;

        /* 组装URL */
        if(0 === url.indexOf("/")){ //路由模式
            this.MODEL[0] == 0 && $.error("该URL模式不支持使用路由!(" + url + ")");

            /* 去掉右侧分割符 */
            if("/" == url.substr(-1)){
                url = url.substr(0, url.length -1)
            }
            url = ("/" == this.DEEP) ? url.substr(1) : url.substr(1).replace(/\//g, this.DEEP);
            url = "/" + url;
        } else { //非路由模式
            /* 解析URL */
            path = url.split("/");
            path = [path.pop(), path.pop(), path.pop()].reverse();
            path[1] || $.error("ThinkPHP.U(" + url + ")没有指定控制器");

            if(path[0]){
                param[this.VAR[0]] = this.MODEL[1] ? path[0].toLowerCase() : path[0];
            }

            param[this.VAR[1]] = this.MODEL[1] ? this.parse_name(path[1]) : path[1];
            param[this.VAR[2]] = path[2].toLowerCase();

            url = "?" + $.param(param);
        }

        /* 解析参数 */
        if(typeof vars === "string"){
            vars = this.parse_str(vars);
        } else if(!$.isPlainObject(vars)){
            vars = {};
        }

        /* 解析URL自带的参数 */
        info.query && $.extend(vars, this.parse_str(info.query));

        if(vars){
            url += "&" + $.param(vars);
        }

        if(0 != this.MODEL[0]){
            url = url.replace("?" + (path[0] ? this.VAR[0] : this.VAR[1]) + "=", "/")
                     .replace("&" + this.VAR[1] + "=", this.DEEP)
                     .replace("&" + this.VAR[2] + "=", this.DEEP)
                     .replace(/(\w+=&)|(&?\w+=$)/g, "")
                     .replace(/[&=]/g, this.DEEP);

            /* 添加伪静态后缀 */
            if(false !== suffix){
                suffix = suffix || this.MODEL[2].split("|")[0];
                if(suffix){
                    url += "." + suffix;
                }
            }
        }

        url = this.APP + url;
        return url;
    }

    /* 设置表单的值 */
    ThinkPHP.setValue = function(name, value){
        var first = name.substr(0,1), input, i = 0, val;
        if(value === "") return;
        if("#" === first || "." === first){
            input = $(name);
        } else {
            input = $("[name='" + name + "']");
        }

        if(input.eq(0).is(":radio")) { //单选按钮
            input.filter("[value='" + value + "']").each(function(){this.checked = true});
        } else if(input.eq(0).is(":checkbox")) { //复选框
            if(!$.isArray(value)){
                val = new Array();
                val[0] = value;
            } else {
                val = value;
            }
            for(i = 0, len = val.length; i 

3.使用

// 生成连接
function editRule(id,status){
    window.location.href = Think.U('Admin/AuthManager/editRule','id='+id+'&status='+status);
}

// 设置表单值,可以为ID、Class、Name
Think.setValue('username','张三');

4.具体可以下载oneThink后。打开 /Public/static/Think.js

希望可以帮到你,以上代码为oneThink封装。我只是一个搬运工,最后,在页面中ThinkPHP本身的U方法是无法动态的去传递一些JS变量

php渲染出这个页面的时候,U方法就已经生成链接了
请理解一个web页面的生成过程

页面加载的时候已经解析了U方法,所以动态获取的那个参数就是之后才加入到链接,这个用js的方式去获取这个参数,并动态拼凑(上面各位都贴出各种代码了我就不贴了),个人觉得这样子很繁琐, 看你上面的功能,无非就是做个搜索功能,我的实现方法如下:


    
     搜 索 
   

单独用一个JS的函数,事件触发来拼凑a标签的URL,比如

var url = '{:u(xxxxx)}?key='+$("#keyword").val();

只能用楼上的办法,在js文件里面单独写方法来控制,因为模板方法是输出为html之前生成好了,所以没法动态改变

推荐阅读
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了前端人员必须知道的三个问题,即前端都做哪些事、前端都需要哪些技术,以及前端的发展阶段。初级阶段包括HTML、CSS、JavaScript和jQuery的基础知识。进阶阶段涵盖了面向对象编程、响应式设计、Ajax、HTML5等新兴技术。高级阶段包括架构基础、模块化开发、预编译和前沿规范等内容。此外,还介绍了一些后端服务,如Node.js。 ... [详细]
  • 本文介绍了在满足特定条件时如何在输入字段中使用默认值的方法和相应的代码。当输入字段填充100或更多的金额时,使用50作为默认值;当输入字段填充有-20或更多(负数)时,使用-10作为默认值。文章还提供了相关的JavaScript和Jquery代码,用于动态地根据条件使用默认值。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • mui框架offcanvas侧滑超出部分隐藏无法滚动如何解决
    web前端|js教程off-canvas,部分,超出web前端-js教程mui框架中off-canvas侧滑的一个缺点就是无法出现滚动条,因为它主要用途是设置类似于qq界面的那种格 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • Java实战之电影在线观看系统的实现
    本文介绍了Java实战之电影在线观看系统的实现过程。首先对项目进行了简述,然后展示了系统的效果图。接着介绍了系统的核心代码,包括后台用户管理控制器、电影管理控制器和前台电影控制器。最后对项目的环境配置和使用的技术进行了说明,包括JSP、Spring、SpringMVC、MyBatis、html、css、JavaScript、JQuery、Ajax、layui和maven等。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • Javascript中带有加号 - 减号(±)的极坐标曲线方程 - Polar curve equation with plus-minus sign (±) in Javascript
    IamtryingtodrawpolarcurvesonHTMLcanvasusingJavascript.WhatshouldIdowhenIwanttoco ... [详细]
  • 本文介绍了如何在Jquery中通过元素的样式值获取元素,并将其赋值给一个变量。提供了5种解决方案供参考。 ... [详细]
  • Jquery 跨域问题
    为什么80%的码农都做不了架构师?JQuery1.2后getJSON方法支持跨域读取json数据,原理是利用一个叫做jsonp的概念。当然 ... [详细]
  • angular.element使用方法及总结
    2019独角兽企业重金招聘Python工程师标准在线查询:http:each.sinaapp.comangularapielement.html使用方法 ... [详细]
  • jQuery :nthchild前有无空格的区别
    :nth-child(index)子元素过滤选择器的描述是:选取每个父元素下的弟index个子元素,index从1开始。然后,我写了如下h ... [详细]
author-avatar
夏初如深秋123_929
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有