使用Jquery $ getJSON如何在Url param之后为[data]参数动态创建数据?

Bre*_*uck 5 jquery json getjson

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

来自jquery网站的例子:

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

我以为我可以构建一个字符串(无论如何都没有意义)并将其放在{}内,但我显然不明白那一部分.

name:不是一个字符串,你不能在该部分中放置一个变量,所以我如何动态地将项目放入[data]中.

更新:谢谢你的答案.如果我以后没有找到有效值,或者我需要销毁它并重新创建它,我是否能够从对象中删除参数名称?我使用一些选择框来选择东西,我可能没有选择的东西,所以我不想传递参数名称/值.

Poi*_*nty 13

您可以像这样构建对象:

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

当然,您不必在匿名函数中构建"数据"对象; 你可以事先单独做:

var theData = {};
theData[someVariableWithANameInIt] = someRandomValue();
$.getJSON(url, theData, function(jsonStuff) { ... });
Run Code Online (Sandbox Code Playgroud)

以下是如何从<select>页面上的一组元素构建此类对象:

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

$.getJSON(url, theData, function(jsonStuff) { ... });
Run Code Online (Sandbox Code Playgroud)


Guf*_*ffa 7

创建一个对象,然后您可以在其中放置您喜欢的任何属性:

var data = new Object();
Run Code Online (Sandbox Code Playgroud)

要么:

var data = {};
Run Code Online (Sandbox Code Playgroud)

您可以使用属性语法:

data.name = 'John';
data.time = '2pm';
Run Code Online (Sandbox Code Playgroud)

或关联数组语法(如果参数名称是关键字,则有用):

data['name'] = 'John';
data['time'] = '2pm';
Run Code Online (Sandbox Code Playgroud)

您当然可以为值使用变量,甚至可以使用变量来指定参数名称:

var param = 'name';
var value = 'John';
data[param] = value;
Run Code Online (Sandbox Code Playgroud)

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

$.getJSON("test.js", data, function(json){
   alert("JSON Data: " + json.users[3].name);
});
Run Code Online (Sandbox Code Playgroud)