5

Jsonを機能させ、jsonの戻り値を解析するのに問題はありません。動的な「データが何であれ」を構築し、それを[data]に貼り付けて、そこからパラメーターを渡し、手動でURLに追加するのではなく、どうすればよいか疑問に思っていました。

jquery Web サイトの例から:

$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
     alert("JSON Data: " + json.users[3].name);
});

文字列を作成して(とにかく意味がありません)、{}内にドロップできると思っていましたが、明らかにその部分を理解していません。

name: は文字列ではなく、その部分に変数を配置することはできません。[data] が何であれ、項目を動的に配置するにはどうすればよいでしょうか。

更新: 回答ありがとうございます。後で有効な値が見つからなかった場合、オブジェクトからパラメーター名を削除できますか? または、破棄して再作成する必要がありますか? いくつかの選択ボックスを使用して物事を選択していますが、何かを選択していない可能性があるため、そのパラメーター名/値を渡したくありません。

4

4 に答える 4

13

次のようにオブジェクトを構築できます。

var someVar = someRandomString();
$.getJSON('test.js', (function() {
  var theData = {};
  theData[someVar] = someRandomValue();
  return theData;
})(), function(jsonStuffFromServer) {
  alert("JSON Data: " + jsonStuffFromServer.users[3].name);
});

もちろん、無名関数で「データ」オブジェクトを構築する必要はありません。事前に個別に行うことができます:

var theData = {};
theData[someVariableWithANameInIt] = someRandomValue();
$.getJSON(url, theData, function(jsonStuff) { ... });

<select>ページ上の一連の要素からそのようなオブジェクトを構築する方法は次のとおりです。

var theData = {};
$('#myForm select').filter(function() { return $(this).val() != ''; })
  .each(function() {
    theData[this.name] = $(this).val();
  });

$.getJSON(url, theData, function(jsonStuff) { ... });
于 2010-03-14T12:15:34.503 に答える
7

オブジェクトを作成し、好きなプロパティをそこに入れることができます:

var data = new Object();

また:

var data = {};

プロパティ構文を使用できます。

data.name = 'John';
data.time = '2pm';

または、配列構文を関連付けます (パラメーター名がキーワードの場合に便利です)。

data['name'] = 'John';
data['time'] = '2pm';

もちろん、変数を値に使用することも、変数を使用してパラメーター名を指定することもできます。

var param = 'name';
var value = 'John';
data[param] = value;

次に、呼び出しで data 変数を使用します。

$.getJSON("test.js", data, function(json){
   alert("JSON Data: " + json.users[3].name);
});
于 2010-03-14T12:17:53.510 に答える
1

あなたはこれを行うことができます:

var myName = $("#nameField").val();
var myTime = $("#timeField").val();

$.getJSON("test.js", { 'name': myName, 'time': myTime}, function(json){
     alert("JSON Data: " + json.users[3].name);
});

それはあなたが意味するものですか、それとも変数と同様に動的パラメーターですか?

于 2010-03-14T12:15:16.213 に答える
0

{} は JavaScriptオブジェクト リテラルであるため、name はそのオブジェクトのプロパティです。

次のようなことができます。

var data = {};
data.name = $("#input").val();
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});

または、このようなもの

var data = {
    name: $("#input").val(),
};
$.getJSON("test.js", data, function(json){
     alert("JSON Data: " + json.users[3].name);
});
于 2010-03-14T12:16:02.963 に答える