Преобразовать объект JavaScript в качестве параметров URL-адреса
Я понимаю, что в принципе я, вероятно, иду по этому неверному пути, поэтому я открыт для любых толчков в правильном направлении.
Я пытаюсь использовать API HipChat для отправки уведомления в комнату следующим образом:
Https://www.hipchat.com/docs/api/method/rooms/message
Я пытаюсь построить URL в Примере с параметрами объекта js, поэтому в основном я пытаюсь преобразовать это:
var hipChatSettings = {
format:"json",
auth_token:token,
room_id: 1,
from: "Notifications",
message: "Message"
}
К это:
4 ответа:
Вы должны проверить этот jQuery.функция param .
var params = { width:1680, height:1050 }; var str = jQuery.param( params ); console.log(str);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
Object.keys(hipChatSettings).map(function(k) { return encodeURIComponent(k) + "=" + encodeURIComponent(hipChatSettings[k]); }).join('&') // => "format=json&auth_token=token&room_id=1&from=Notifications&message=Message"
Предупреждение: новый JavaScript. Если вы хотите, чтобы он работал на древних, shim или переписать в
for
.
Что-то вроде этого может сработать для вас
var str = "?" + Object.keys(hipChatSettings).map(function(prop) { return [prop, hipChatSettings[prop]].map(encodeURIComponent).join("="); }).join("&"); // "?format=json&auth_token=token&room_id=1&from=Notifications&message=Message"
Если вы не можете зависеть от ECMAScript 5, Вы можете использовать простой цикл for
var pairs = []; for (var prop in hipChatSettings) { if (hipChatSettings.hasOwnProperty(prop)) { var k = encodeURIComponent(prop), v = encodeURIComponent(hipChatSettings[prop]); pairs.push( k + "=" + v); } } var str = "?" + pairs.join("&");
Попробуйте этот метод:
public static SerializeParams<T>(Datos: T): string { var keys = Object.keys(Datos); var stringParams: string = "?"; for (var i in keys) { var name = keys[i]; if (i == 0) stringParams += name + "=" + JSON.stringify(Datos[name]); else stringParams += "&" + name + "=" + JSON.stringify(Datos[name]) } return stringParams; };