jQuery 和PHP:编码&解码网址
每当单击链接时,我都会通过 URL 将字符串传递到另一个页面。
原始 a
标记及其 href
是通过 PHP while 循环创建的,如下所示:
<a href=".($row['secondary'] == 'true' ? "secondary_imgs.php?imgId=".$row['imgId']."
&imgTitle=".$row['imgTitle']."" : "new_arrivals_img/".$row['imgURL']."").">
注意: a
标签确实包含其他属性,但为了简单起见,我删除了它们。
然后使用以下 jQuery 函数附加 href
以及当前窗口尺寸:
$("a[href^='secondary_imgs.php']").click(function(){
var pageWidth = $(window).width();
var pageHeight = $(window).height();
var url = $(this).attr('href');
var idx = url.indexOf('&pageWidth=');
if (idx != -1) {
url = url.substr(0, idx);
}
url += '&pageWidth=' + pageWidth + '&pageHeight=' + pageHeight;
$(this).attr('href', url);
});
我的问题是,我应该在此使用什么方法来编码 URL在这种情况下,是否需要首先使用 PHP 完成,然后使用 jQuery/JavaScript,最后通过 PHP 进行解码? 或者是否需要在 PHP 和 jQuery/JavaScript 中完成?原始 PHP $row['imgTitle']
中总是至少有空格,所以我知道肯定需要这样做。但由于附加值始终是等于数字的变量,是否也需要对其进行编码?
我知道每种编码语言都有多种对 URL 进行编码/解码的方法,但我的知识不足以做出选择。
如果有人还可以提供我如何执行每个步骤的示例,我将不胜感激。
I am passing a string through a URL to another page whenever a link is clicked.
The original a
tag and its href
are created via a PHP while loop as follows:
<a href=".($row['secondary'] == 'true' ? "secondary_imgs.php?imgId=".$row['imgId']."
&imgTitle=".$row['imgTitle']."" : "new_arrivals_img/".$row['imgURL']."").">
Note: The a
tag does contain other attributes but I removed them for simplicity.
The href
is then appended, with the current window dimensions, using the following jQuery function:
$("a[href^='secondary_imgs.php']").click(function(){
var pageWidth = $(window).width();
var pageHeight = $(window).height();
var url = $(this).attr('href');
var idx = url.indexOf('&pageWidth=');
if (idx != -1) {
url = url.substr(0, idx);
}
url += '&pageWidth=' + pageWidth + '&pageHeight=' + pageHeight;
$(this).attr('href', url);
});
My question is, what method(s) of encoding the URL should I use in this case, seeing as it will need to be done with first PHP, then jQuery/JavaScript, and finally decoded via PHP?
Or will it need to be done in both PHP and jQuery/JavaScript? The original PHP $row['imgTitle']
will always have at least spaces in it, and so I know it needs to be done then for sure. But seeing as the appended values will always be a variable equalling a number, does that need to be encoded as well?
I know there are several methods of encoding/decoding URLs in each coding language, and my knowledge isn't adequate enough to make the choice.
If someone could also provide an example of how I would perform each step, it would be much appreciated.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您应该在 PHP 中使用
urlencode()
对 URI 组件进行编码。JavaScript 中的等效函数是
encodeURIComponent()
。PHP 将自动解码这样编码的参数。
所以,在你的 PHP 中:
同样,在你的 javascript 中:
You should use
urlencode()
in PHP to encode URI components.The equivalent function in javascript is
encodeURIComponent()
.PHP will decode parameters encoded like this automatically.
So, in you PHP:
And equivalently, in your javascript:
为什么需要首先使用 PHP 来完成?这个 JS urlencode 函数可以从 PHP 进行 urldecode。编码一次,解码一次:
Why would it need to be done first with PHP? This JS urlencode function is able to be urldecoded from PHP. Encode once, decode once: