5

让 Json 工作并解析 json 返回没有问题。我只是想知道如何构建一个动态的“无论数据是什么”并将其粘贴到 [data] 中以从那里传递我的参数,而不是手动将它们附加到 url。

来自 jquery 网站示例:

$.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;

然后你只需在调用中使用数据变量:

$.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 回答