【问题标题】:angular send json from a website to another角度将json从一个网站发送到另一个
【发布时间】:2016-08-21 12:01:57
【问题描述】:

我在这两个网站中都使用 Angular。 我在控制器中有一个带有 JSON 的第一个网站。 我需要将它发送到另一个网站的控制器。

问题: 以下代码运行良好,因为我不会在 JSON 中发送特殊字符,例如 &,他当然会破坏我的网址(当然还有网址长度限制)

破坏我的代码的 JSON 示例:{"recordedby":"mackee&","year":2016}

如何在不破坏网址的情况下发送 &/ 等特殊字符?

我寻找一种将数据作为邮件发送的解决方案,但我什么也没找到。


我现在在做什么:

在第一个网站控制器中:

angular.module('site1').controller('site1Controller', ['$scope',
    function($scope) {
        ...
        $scope.createEditLink =function(){
            var query = encodeURIComponent(JSON.stringify(jsonToSend));
            var url =  host +"/edit/query="+query;
            return url ;
        }
        ...
    }
]);

在第一个网站视图中:

<a ng-href="{{createEditLink()}}" target="_blank">
   edit
</a>

要发送的 JSON:

{"filtered":{"filter":{"and":[{"or":[{"regexp":{"recordedby":".*mackee*.*"}},{"term":{"recordedby":"mackee*","_cache":false}}]}]}}}

点击它打开此链接:

http://host/edition/query={%22filtered%22:{%22filter%22:{%22and%22:[{%22or%22:[{%22regexp%22:{%22recordedby%22:%22.*mackee*.*%22}},{%22term%22:{%22recordedby%22:%22mackee*%22,%22_cache%22:false}}]}]}}}

在第二个网站的控制器中:

angular.module('site2').controller('site2Controller', ['$scope','$routeParams',
    function($scope,$routeParams) {

        function myUrlToArray(url) {
           var paramsFormatted = {};
           var paramstmp = decodeURI(url).split("&");
           for (var index = 0; index < paramstmp.length; ++index) {
              var tmp = paramstmp[index].split("=");
              paramsFormatted[ tmp[0] ] = tmp[1];
           }
           return paramsFormatted;
        }

        $scope.urlParams = myUrlToArray($routeParams.params);       
        var myJson = JSON.parse(decodeURIComponent($scope.urlParams["query"]));

         ....
    }
]);

欢迎提出任何建议。

【问题讨论】:

  • 这里有问题吗?
  • 是的。这项工作,但是当 JSON 内部有特殊的 caretère 时,如 &amp;/ 它不起作用

标签: angularjs json url


【解决方案1】:

您看到这样一个 URl 的原因是因为它是根据以下编码规则进行编码的:

  • 字母数字字符“a”到“z”、“A”到“Z”和“0”到“9”保持不变。
  • 特殊字符“.”、“-”、“*”和“_”保持不变。
  • 空格字符“”转换为加号“+”
  • 所有其他字符都是不安全的,首先使用某种编码方案将其转换为一个或多个字节。然后表示每个字节 由 3 个字符的字符串“%xy”,其中 xy 是两位数 字节的十六进制表示

来源:How to handle special characters in url as parameter values?

此外,& 被解释为 HTML 并且必须是 HTML 编码的。因此,您必须在 json 中将 & 替换为 &amp;amp; 才能正常工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-09-06
    • 2017-08-05
    • 2015-01-07
    • 1970-01-01
    • 1970-01-01
    • 2018-04-24
    • 1970-01-01
    相关资源
    最近更新 更多