我没有问题让Json工作并解析json返回。我只是想知道如何构建一个动态的“无论数据是什么”并将其粘贴到[data]中以从那里传递我的参数而不是手动将它们附加到url。
来自jquery网站示例:
$.getJSON("test.js", { name: "John", time: "2pm" }, function(json){
alert("JSON Data: " + json.users[3].name);
});
我以为我可以构建一个字符串(无论如何都没有意义)并将其放在{}内,但我显然不明白那一部分。
name:不是一个字符串,你不能在该部分中放置一个变量,所以我如何动态地将项目放入[data]中。
更新:感谢您的回答。如果我以后没有找到有效值,或者我需要销毁它并重新创建它,我是否能够从对象中删除参数名称?我使用一些选择框来选择东西,我可能没有选择的东西,所以我不想传递参数名称/值。
答案 0 :(得分: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) { ... });
答案 1 :(得分: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);
});
答案 2 :(得分: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);
});
这是你的意思,还是动态参数以及变量?
答案 3 :(得分:0)
{}是javascript object literal,因此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);
});