Посмотрите на этот пример:
var app = angular.module('plunker', []);
app.controller('MainCtrl', function($scope,$http) {
var getJoke = function(){
return $http.get('http://api.icndb.com/jokes/random').then(function(res){
return res.data.value;
});
}
getJoke().then(function(res) {
console.log(res.joke);
});
});
Как вы можете видеть, getJoke
возвращает разрешенное обещание (оно разрешено при возврате res.data.value
). Таким образом, вы ждете, пока запрос $ http.get не будет завершен, а затем выполнится console.log (res.joke) (как обычный асинхронный поток).
Это plnkr:
Для запроса URI используйте urlencode
/ urldecode
; для чего-либо еще используйте rawurlencode
/ rawurldecode
.
Разница между urlencode
и rawurlencode
заключается в том, что
urlencode
кодируется в соответствии с application / x-www-form-urlencoded (пространство кодируется с помощью +
), в то время как rawurlencode
кодирует согласно Percent-Encoding (пробел кодируется с помощью %20
). Уловно названный urlencode () и urldecode () .
Однако вам не нужно использовать urldecode()
для переменных которые появляются в $_POST
и $_GET
.
Вот мой прецедент, который требует исключительного количества кодирования. Может быть, вы думаете, что это надуло, но мы это делаем на производстве. Совсем наоборот, это охватывает все типы кодирования, поэтому я отправляю в качестве учебника.
Кто-то только что купил предоплаченную подарочную карту («токен») на нашем сайте , У токенов есть соответствующие URL-адреса, чтобы их выкупить. Этот клиент хочет отправить его кому-то другому.
// The order system generates some opaque token
$token = 'w%a&!e#"^2(^@azW';
// Here is a URL to redeem that token
$redeemUrl = 'https://httpbin.org/get?token=' . urlencode($token);
// Actual contents we want for the email
$subject = 'I just bought this for you';
$body = 'I just bought a widget for you. Please enter your shipping details here: ' . $redeemUrl;
// A URI for the email as prescribed
$mailToUri = 'mailto:?subject=' . rawurlencode($subject) . '&body=' . rawurlencode($body);
// Print an HTML element that links to that page
echo '<a href="' . htmlspecialchars($mailToUri) . '">Email your friend</a>';
Примечание: вышесказанное предполагает, что вы выводите на text/html
ссылку на mailto
, которая позволяет им это делать.
text/json
, просто используйте $retval['url'] = $mailToUri;
, потому что выходное кодирование обрабатывается с помощью json_encode()
. Вы должны увидеть:
"args": {
"token": "w%a&!e#\"^2(^@azW"
},
И, конечно, это представление JSON $token
выше.