在CakePHP中使用javascript访问URL查询参数

在CakePHP中使用javascript访问URL查询参数,url,cakephp,cakephp-1.2,Url,Cakephp,Cakephp 1.2,CakePHP URL查询参数不是以标准方式完成的,例如参数是/param1:value1/param2:value2,而不是?param1=value1¶m2=value2 这意味着javascript location.search不会返回值 有一个使用location.search实现我想要的功能 我不得不修改这个来使用它 var pairs = location.pathname.split('/'); 而不是 var pairs = location.search.subst

CakePHP URL查询参数不是以标准方式完成的,例如参数是/param1:value1/param2:value2,而不是?param1=value1¶m2=value2

这意味着javascript location.search不会返回值

有一个使用location.search实现我想要的功能

我不得不修改这个来使用它

var pairs = location.pathname.split('/');
而不是

var pairs = location.search.substring(1).split('&');
但是,这现在包括变量
对中除主机之外的所有内容。所以我必须检查一个“:”来看看它是否是一个参数

这很有效-但是有更好的(更像蛋糕的)方法吗?我不想改进JQuery插件(例如),我想找到更好的方法将插件与CakePHP集成

Upddate:我已经删除了JQuery代码的其余部分,因为我对JQuery代码很满意,我的问题是让它更适合蛋糕


是否有一些“蛋糕式”的方法可以从
位置删除应用程序、模型和控制器的路径。路径名
,这样您就可以得到通常从
位置获得的路径。搜索

因为您在搜索特定参数,所以可以使用正则表达式:

$.getQueryParam = function (param) {
    var re = new RegExp(param+':([^\/]+)');
    var matches = location.pathname.match(re);
    if (matches.length) {
        return matches[1];
    }
    return undefined;
}

看来没有更好的方法了。以下是javascript供参考:

// jQuery getQueryParam Plugin 1.0.1 (20100429)
// By John Terenzio | http://plugins.jquery.com/project/getqueryparam | MIT License
// Modified by ICC to work with cakephp
(function ($) {
    // jQuery method, this will work like PHP's $_GET[]
    $.getQueryParam = function (param) {
        // get the pairs of params fist
        // we can't use the javascript 'location.search' because the cakephp URL doesn't use standard URL params
        // e.g. the params are /param1:value1/param2:value2 instead of ?param1=value1&param2=value2
        var pairs = location.pathname.split('/');
        // now iterate each pair
        for (var i = 0; i < pairs.length; i++) {
            // cakephp query params all contain ':'
            if (pairs[i].indexOf(':') > 0) {
                var params = pairs[i].split(':');
                if (params[0] == param) {
                    // if the param doesn't have a value, like ?photos&videos, then return an empty srting
                    return params[1] || '';
                }
            }
        }
        //otherwise return undefined to signify that the param does not exist
        return undefined;
    };
})(jQuery);
//jQuery getQueryParam插件1.0.1(20100429)
//约翰·特伦齐奥http://plugins.jquery.com/project/getqueryparam |麻省理工学院执照
//由ICC修改以使用cakephp
(函数($){
//jQuery方法,这将与PHP的$\u GET[]类似
$.getQueryParam=函数(参数){
//把这两对女伴的拳头拿过来
//我们不能使用javascript“location.search”,因为cakephp URL不使用标准URL参数
//例如,参数是/param1:value1/param2:value2,而不是?param1=value1¶m2=value2
var pairs=location.pathname.split('/');
//现在迭代每一对
对于(变量i=0;i0{
var params=pairs[i].split(“:”);
if(params[0]==param){
//如果参数没有值,如?照片和视频,则返回一个空srting
返回参数[1]| |“”;
}
}
}
//否则返回undefined,表示参数不存在
返回未定义;
};
})(jQuery);

谢谢@chrisdpratt,很抱歉造成混淆,但我正在寻找将其更好地集成到蛋糕中的方法。我已经编辑了这个问题。