この質問に対する答えが見つからないようです..URLパラメータ文字列をJavaScriptでJSONに変換するにはどうすればよいですか? このような組み込み関数があるかどうか、または仕事をすることができるワンライナーがあるかどうかを尋ねるつもりですか?
例:
some=params&over=here
=>{"some":"params","over":"here"}
この質問に対する答えが見つからないようです..URLパラメータ文字列をJavaScriptでJSONに変換するにはどうすればよいですか? このような組み込み関数があるかどうか、または仕事をすることができるワンライナーがあるかどうかを尋ねるつもりですか?
例:
some=params&over=here
=>{"some":"params","over":"here"}
JSONオブジェクトを返すメソッドを作成できます
var params = getUrlVars('some=params&over=here');
console.log(params);
function getUrlVars(url) {
var hash;
var myJson = {};
var hashes = url.slice(url.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
myJson[hash[0]] = hash[1];
// If you want to get in native datatypes
// myJson[hash[0]] = JSON.parse(hash[1]);
}
return myJson;
}
これを試して :
var str = 'some1=param&some2=param2';
JSON.parse('{"' + decodeURI(str).replace(/"/g, '\\"').replace(/&/g, '","').replace(/=/g,'":"').replace(/\s/g,'') + '"}')
// {some1: "param1", some2: "param2"}
この関数を使用してみてください:
// Returns an object with elements "name: value" with data ftom URL (the "name=value" pairs)
function getDataUrl(url) {
// From: http://coursesweb.net/javascript/
var url_data = url.match(/\?([^#]*)/i)[1]; // gets the string between '?' and '#'
// separate the data into an array, in case the are multiple pairs name=value
var ar_url_data = url_data.split('&');
// traverse the array, and adds into an object elements name:value
var data_url = {};
for(var i=0; i<ar_url_data.length; i++) {
var ar_val = ar_url_data[i].split('='); // separate name and value from each pair
data_url[ar_val[0]] = ar_val[1];
}
return data_url;
}
satpalの回答を使用してHtml.BeginForm
、@Html.TextBoxFor
などで動作する素敵な Razor to JSON パイプラインを提供しました。
更新された getUrlVars 関数は次のようになります。
function getUrlVars(url) {
var hash;
var myJson = {};
var hashes = url.slice(url.indexOf('?') + 1).split('&');
for (var i = 0; i < hashes.length; i++) {
hash = hashes[i].split('=');
var value = decodeURIComponent(hash[1]);
value = value.replace("[\"", "");
value = value.replace("\"]", "");
value = value.replace(/\^.*/, "");
myJson[hash[0]] = value;
}
return myJson;
}
余分な呼び出しは、おそらくドロップダウンルックアップreplace
を介して、テキスト ボックスで取得した文字に対するものです。magicSuggest
このdecodeURIComponent
呼び出しは、最初の % からクリーンアップします。
次のようなブロックで呼び出します。
var serialized = $("#saveForm").serialize();
var params = getUrlVars(serialized);
私が持っている Razor 構文は次のようになります。
@using (Html.BeginForm("SaveNewAddress", "Internal", FormMethod.Post, new { @Id = "saveForm" }))
{
@Html.ValidationSummary()
<table style="width: 100%; margin: 0 auto; padding: 10px">
<tr>
<td colspan="2">
<label>Is this a Liliputian Address?</label>
</td>
<td colspan="4" style="font-size: 1.1em">
<div style="float: left; margin-left: 10px">
<label class="label_check">
@Html.RadioButton("IsLiliputian", "Yes", true, new { @id = "IsLiliputianYes", @style = "width:30px" })
</label>
Yes
</div>
...etc
これは、ajax を介して Web サービスにスローできる js オブジェクトの ASP.Net MVC コントロール内および ASP.Net MVC コントロールを介して作成された一連のデータを取得する優れた方法を提供します。