如何在 AngularJS 中进行 URL 编码/解码?


处理 URL 是 Web 开发的基础组成部分,URL 用于在不同的网页和页面之间跳转。空格、问号和和号等特殊字符在通过互联网传输 URL 时可能会导致问题。例如,如果 URL 包含空格,某些 Web 服务器可能会出现意外行为,将其视为单独的命令或参数。

AngularJS 是一个流行的 JavaScript 框架,用于构建单页应用程序。它提供了几种内置方法用于 URL 编码和解码,使开发人员可以轻松地在应用程序中处理 URL。我们将探讨在 AngularJS 中进行 URL 编码和解码的不同方法,并演示其在实际场景中的应用。

方法 1:编码

我们可以使用 `encodeURIComponent()` 来编码 URL。此函数将使我们能够编码 URL 中存在的特殊字符。

语法

Var encodedURL = encodeURIComponent("")

该函数会将不可打印的 URL 转换为 Web 浏览器和服务器普遍接受的格式。

算法

步骤 1: 从 CDN 导入 AngularJS 压缩版 JS 库。

步骤 2: 使用 `ng-controller` div 属性包装需要 AngularJS 功能的代码。

步骤 3: 将整个应用程序包装在 `ng-app` 下。

步骤 4: 使用 `encodeURIComponent()` 函数编码 URL,并通过将 `ng-click` 绑定到带有用户自定义函数的按钮来调用控制器函数。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Encode/Decode URL</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.8.3/angular.min.js"
            integrity="sha512-KZmyTq3PLx9EZl0RHShHQuXtrvdJ+m35tuOiwlcZfs/rE7NZv29ygNA8SFCkMXTnYZQK2OX0Gm2qKGfvWEtRXA=="
            crossorigin="anonymous" referrerpolicy="no-referrer">
    </script>
</head>
<body ng-app="app">
    <div ng-controller="controller">
        <h1>Enter the URL you want to encode:</h1>
        <input type="text" id="url" />
        <button type="submit" ng-click="encodeUrl()">Encode</button>
        <h3>The Encoded URL is:</h3>
        <h5 id="encodedUrl">{{url2}}</h5>
    </div>

    <script>
        var myApp = angular.module("app", []);
        myApp.controller("controller", function($scope) {
            $scope.url2 = '';
            $scope.encodeUrl = function() {
                $scope.url1 = document.getElementById("url").value;
                $scope.url2 = encodeURIComponent($scope.url1);
            }
        });
    </script>
    <style>
        body{
            background-color: white;
            padding-left: 20%;
            padding-right: 20%;
        }
        h1{
            font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            font-size: xx-large;
            background-color:aquamarine;
            padding-top: 15px;
            padding-bottom: 15px;
            text-align: center;
            border-radius: 15px;
        }
        input[type="text"]{
            padding-top: 15px;
            padding-bottom: 15px;
            width: 80%;
            font-size: 25px;
            padding-left: 10px;
            border-radius: 15px;
        }
        button{
            padding-top: 15px;
            padding-bottom: 15px;
            width: 17%;
            font-size: 25px;
        }
        h5{
            font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            font-size: x-large;
            background-color:aquamarine;
            min-height: 40px;
            padding-top: 15px;
            padding-bottom: 15px;
            text-align: center;
            border-radius: 15px;
        }
    </style>
</body>
</html>

方法 2:解码 URL

解码是指将基于转义序列的 URL 替换为正常的基于特殊字符的 URL 的过程。为了使用 AngularJS 实现这一点,我们有 `decodeURIComponent()` 函数,它接受编码的 URL 作为输入,并返回相同的解码序列。

语法

Var decodedURL = decodeURIComponent("")

在此代码段中,`decodeURIComponent` 将“``”转换为带有特殊字符的普通 URL。

算法

步骤 1: 从 CDN 导入 AngularJS 压缩版 JS 库。

步骤 2: 使用 `ng-controller` div 属性包装需要 AngularJS 功能的代码。

步骤 3: 将整个应用程序包装在 `ng-app` 下。

步骤 4: 使用 `decodeURIComponent()` 函数解码 URL,并通过将 `ng-click` 绑定到带有用户自定义函数的按钮来调用控制器函数。

示例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Encode/Decode URL</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.8.3/angular.min.js"
            integrity="sha512-KZmyTq3PLx9EZl0RHShHQuXtrvdJ+m35tuOiwlcZfs/rE7NZv29ygNA8SFCkMXTnYZQK2OX0Gm2qKGfvWEtRXA=="
            crossorigin="anonymous" referrerpolicy="no-referrer">
    </script>
</head>
<body ng-app="app">
    <div ng-controller="controller">
        <h1>Enter the encoded URL you want to decode:</h1>
        <input type="text" id="url" />
        <button type="submit" ng-click="encodeUrl()">Decode</button>
        <h3>The decoded URL is:</h3>
        <h5 id="encodedUrl">{{url2}}</h5>
    </div>

    <script>
        var myApp = angular.module("app", []);
        myApp.controller("controller", function($scope) {
            $scope.url2 = '';
            $scope.encodeUrl = function() {
                $scope.url1 = document.getElementById("url").value;
                $scope.url2 = decodeURIComponent($scope.url1);
            }
        });
    </script>
    <style>
        body{
            background-color: white;
            padding-left: 20%;
            padding-right: 20%;
        }
        h1{
            font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            font-size: xx-large;
            background-color:aquamarine;
            padding-top: 15px;
            padding-bottom: 15px;
            text-align: center;
            border-radius: 15px;
        }
        input[type="text"]{
            padding-top: 15px;
            padding-bottom: 15px;
            width: 80%;
            font-size: 25px;
            padding-left: 10px;
            border-radius: 15px;
        }
        button{
            padding-top: 15px;
            padding-bottom: 15px;
            width: 17%;
            font-size: 25px;
        }
        h5{
            font-family:'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
            font-size: x-large;
            background-color:aquamarine;
            min-height: 40px;
            padding-top: 15px;
            padding-bottom: 15px;
            text-align: center;
            border-radius: 15px;
        }
    </style>
</body>
</html>

结论

为了确保应用程序的正常运行,Web 开发人员必须了解 URL 编码和解码技术。URL 编码和解码提供了一种安全可靠的解决方案来处理 URL 中可能存在的各种特殊字符,并解决这些字符在互联网上传输时可能导致的问题。

AngularJS 用于创建单页应用程序。通过实施这些方法,您可以确保用户在您的 AngularJS 应用程序中获得流畅的体验和无障碍的导航。

更新于:2023年8月9日

998 次浏览

启动您的 职业生涯

完成课程获得认证

开始学习
广告