Issue
I guess I'm having a problem with html_entity_decode
, that probably has a simple solution which I've not found yet. This is my problem, I have this string:
L'evento dell'anno
Which when I save into my db, gets filtered with filter_var($input,FILTER_SANITIZE_STRING);
and outputs this:
L'evento dell'anno
Now, when I retrieve it directly from PHP inside a page, I don't need no encoding / decoding functions, and text shows as expected, as I wrote it initially, but, when I load it from AngularJS ( version 1) $http.get()
it doesn't replace chars, if I print the object values I see all those HTML entities ( I think they are, I'm not sure ).
This is my AngularJS code part:
$http.get(php_data.ajax_url, {
params: {
action: 'get-sostenitore',
get_id: show_id
}
}).then(function (response) {
// Handle data
});
The // Handle data
part only prints results, nothing more.
Didn't work, so I added this PHP part:
$decoded_vars = array_map(function ($val) {
return html_entity_decode($val, ENT_COMPAT,'UTF-8');
}, get_object_vars($object));
Doesn't work too.
I've tried htmlentities_decode
too, mb_convert_encoding($val,'UTF-8','HTML-ENTITIES')
, but converts special letters too ( à, è, etc... ).
I've been searching here on StackOverflow for about 2 hours, and I've found some results, like this, this, or this (I've found another full guide to encoding / decoding here on SA, but I didn't find it again ), but none of them solved my problem.
The funny thing is that I've tried pasting my string on this online tool and it shows correctly.
Could it be an AngularJS problem? I'm becoming mad for this, but I'm sure it has a really simple solution
Update
Even if I've solved my problem, I thought it was a PHP - related issue, not JS, but I was actually wrong, so I will update the AngularJS
part by showing how I was using the data I get:
JS Code
app.controller('eventController', ['$http', '$scope', '$httpParamSerializerJQLike', '$interval', 'ngDialog', function ($http, $scope, $httpParamSerializerJQLike, $interval, ngDialog) {
var event = this;
$http.get(php_data.ajax_url, {
params: {
action: 'get-event',
get_id: show_id
}
}).then(function (response) {
// Handle data
if(response.status === 200){
var data = response.data;
ngDialog.open({
className: 'ngdialog-theme-default',
data: data,
controller: 'dialogEventi'
controllerAs: 'evView'
});
}
});
}]);
app.controller('dialogEventi', ['$http', '$scope', '$interval', '$httpParamSerializerJQLike', function ($http, $scope, $interval, $httpParamSerializerJQLike) {
var evView = this;
evView.loadedItem = $scope.ngDialogData;
}]);
Popup code
<div id="show-event" class="bpopup-popup">
<div class="popup-head">
<h2>Visualizza evento</h2>
</div>
<div class="popup-body clearfix">
<div>
<div class="form-group" ng-show="evView.loadedItem.titolo">
<label>Titolo:</label>
{{evView.loadedItem.titolo}}
</div>
<div class="form-group" ng-show="evView.loadedItem.descrizione">
<label>Descrizione:</label><br/>
{{evView.loadedItem.descrizione}}
</div>
<div class="form-group" ng-show="evView.loadedItem.dataora">
<label>Data:</label>
{{evView.loadedItem.dataora}}
</div>
<div class="form-group" ng-show="evView.loadedItem.luogo">
<label>Luogo:</label>
{{evView.loadedItem.luogo}}
</div>
<div class="form-group" ng-show="evView.loadedItem.indirizzo">
<label>Indirizzo:</label>
{{evView.loadedItem.indirizzo}}
</div>
</div>
</div>
</div>
Solution
after hours of searching, I've found a solution, which is angular-sanitize
, which I've found here. So, to solve my problem I've just added ngSanitize
as module dependancy.
Anyway, thanks your all your answers, I've found something interesting in each one of them which I will keep in mind.
Answered By - CapitanFindus
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.