のは、私が持っているとしましょう:私はこれにその配列を回すために滑らかな、高速な方法を見つけようとしているJavascriptチャレンジどのように配列でこれを達成できますか?
var directions = [ "name", "start_address", "end_address", "order_date" ];
:
data: { "directions[name]" : directions_name.val(), "directions[start_address]" : directions_start_address.val(), "directions[end_address]" : directions_end_address.val(), "directions[order_date]" : directions_order_date.val() }
お知らせパターン。配列 "directions"の名前は、値の接頭辞です。 私は人々がこれを行う方法と少なくとも私が試してみる方法を提案する方法に興味があります。
ヒントをいただければ幸いです。
ありがとうございます!
EDIT **これまでに提案のため
感謝。しかし、私は、配列 "方向"は動的である必要があることに言及することを忘れていました。
たとえば、私が使用することができます
places = ["name", "location"]
は
data: { "places[name]" : places_name.val(), "places[location]" : places_location.val() }
alpha = ["blue", "orange"]
を返す必要がありますので、基本的に、私はちょうど関数に配列を渡すことができ
data: { "alpha[blue]" : alpha_blue.val(), "alpha[orange]" : alpha_orange.val() }
を返す必要がありますそのデータオブジェクトを返します。
var directions = ["name", "start_address", .... ]; var data = someCoolFunction(directions);
希望がある。
** EDIT * ** * * ** ** * ****
私は彼らの助けのために皆に感謝したいと思います。私は別のルートに行きました。それを考えた後、HTMLフォーム自体にいくつかのメタ情報を入れることにしました。そして、私は命名規則に固執します。そのため、HTMLフォームには、情報をPOSTする場所をjQueryに指示するために必要な情報があります(膨大な情報はありません)。このよう
// addBox // generic new object box. function addBox(name, options) { var self = this; var title = "Add " + name.charAt(0).toUpperCase() + name.slice(1); var url = name.match(/s$/) ? name.toLowerCase() : name.toLowerCase() + "s"; allFields.val(""); tips.text(""); $("#dialog-form-" + name).dialog($.extend(default_dialog_options, { title: title, buttons: [ { // Add Button text: title, click: function(){ var bValid = true; allFields.removeClass("ui-state-error"); var data = {}; $("#dialog-form-" + name + " input[type=text]").each(function() { // each is fine for small loops :-) var stripped_name = this["name"].replace(name + "_", ""); data[name + "[" + stripped_name + "]"] = $("#dialog-form-" + name + " #" + name + "_" + stripped_name).val(); }); // verify required fields are set $("#dialog-form-" + name + " input[type=text].required").each(function() { bValid = bValid && checkLength($(this), $(this).attr("name").replace("_", " "), 3, 64); }); // find sliders $("#dialog-form-" + name + " .slider").each(function() { data[name + "[" + $(this).attr("data-name") + "]"] = $(this).slider("option", "value"); }); data["trip_id"] = trip_id; if(options != null) { $.extend(data, options); } // add optional key/values if(bValid) { $(".ui-button").attr("disabled", true); $.ajax({ url : "/" + url, type : "POST", data : data }); } } }, { text: "Cancel", click: function(){$(this).dialog("close");} } ] })); }
あなたは何をしようとしているのか分かりません。 – xj9
データの代わりに方向を使用してみませんか? like var direction = {name:name.val()、...} – user347594
渡された変数の名前にアクセスできる関数を書くのは簡単ではないようです:http://stackoverflow.com/questions/1009911/javascript -get-argument-value-and-passed-of-passed-variable-variable –