4

我希望能够通过变量提供 JSON 变量名称及其值,而不是对其进行硬编码:

data: {
  inputVar : inputVal
},

但这样做并定义

inputVar = 'myInputVar';

不起作用,而是直接输入 POST 变量名称才有效:

'myInputVar' : inputVal

最后,我想要完成的是创建一个函数,通过在函数调用中提供 JSON 格式的 AJAX 变量和值,我可以调用它以进行 JSON 格式的 AJAX 调用:

makeAjaxJsonCall(fileName, postVar, postVal) {
  $.ajax({
    type : 'POST',
    url : fileName,
    dataType : 'json',
    data: {
      inputVar : inputVal
    },
    success : function(data) {
      .
      .
      .
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
      .
      .
      .
    }
  });
}

有任何想法吗?

PS。我真的不太了解 JavaScript 编程,所以请在回复时准确地提供完整的代码 - 谢谢!

4

3 回答 3

5

你想要这样的东西吗?:

makeAjaxJsonCall(fileName, postVar, postVal) {
  var data = {};
  data[postVar] = postVal;
  $.ajax({
    type : 'POST',
    url : fileName,
    dataType : 'json',
    data: data,
    success : function(data) {
      .
      .
      .
    },
    error : function(XMLHttpRequest, textStatus, errorThrown) {
      .
      .
      .
    }
  });

}

于 2013-07-02T16:31:38.833 回答
0

您可以像这样设置对象值。

var obj = {};

//This is the same as...
obj.value1 = 'one';

//This...
var varName = 'value1'
obj[varName] = 'one';
于 2013-07-02T16:42:25.263 回答
0

最后两个答案的小解释:

您可以通过以下方式定义对象的元素:

var myObj = {};
myObj.element = 1;
// And using a variable just like you want:
var key = 'myKey';
myObj[key] = 2;

console.log(myObj.key); // 2

因此,您可以先构建数据对象,然后将其传递给 ajax 哈希:

// ...

var myData = {};
myData[inputVal] = 'my value';

//...

makeAjaxJsonCall(fileName, postVar, postVal) {
  $.ajax({
    type : 'POST',
    url : fileName,
    dataType : 'json',
    data: myData, // <-------------
    success : function(data) {

// ...

希望这可以帮助。问候。

于 2013-07-02T16:53:53.473 回答