【发布时间】: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 时,如
&或/它不起作用