gpt4 book ai didi

javascript - 好奇 : is it possible to have dynamic Ajax data variable names?

转载 作者:可可西里 更新时间:2023-11-01 02:55:33 28 4
gpt4 key购买 nike

一些背景:

在最近的一个项目中,我尝试编写一个简化的 jQuery 插件来处理在更新各种输入时发出的一些 Ajax 调用。我将 JavaScript 函数编写为插件,这样我就可以在各种输入上调用它,如下所示:

$("#email").updateChanges();

然后,从插件中,我收集了输入的 ID、值等。

问题:

我真正想做但找不到解决方案的是动态生成通过 ajax 传递的数据变量的名称。

为了更清楚,给出这个函数:

jQuery.fn.updateChanges = function(){

this.bind('blur',function(){

var inputName = $(this).attr("name");
var inputValue = $(this).val();

$.post('/ajax/updateValue.php',
{ email: inputValue }, function(ret){
if (ret=='success') alert("all good!");
}

}

}

...当 inputName 变量为“password”时,如何将 Ajax 调用的数据显示为 { password: inputValue } 而不是 { email: inputValue } ”而不是“电子邮件”?这是一个非常具体的示例,但基本上我只是在寻找一种方法来从单独的动态变量中读取数据变量的名称。

我尝试了 window[inputName] 但没有成功,而且我非常确信这是不可能的。但是,如果有人有想法,我会印象深刻。

顺便说一句,我们最终改用了 { type: inputName, value: inputValue } ,但是它需要在 PHP 方面做更多的工作(别问我,我只是前端人员 :)。

提前致谢!

最佳答案

如果我没理解错的话,这就是你想要的:

jQuery.fn.updateChanges = function(){

this.bind('blur',function(){

var data = {};
data[$(this).attr("name")] = $(this).val();

$.post('/ajax/updateValue.php',
data,
function(ret){
if (ret=='success') alert("all good!");
}
}
}

您的主要问题是尝试使用对象字面量符号来使用动态值,如果不恢复到真正糟糕的做法(例如在不属于 eval() 的地方使用 eval() ;),您就无法做到这一点;

var myObj = { 'n1': 'v1' };

相当于:

var myObj = {}; // {} = new Object();
myObj['n1'] = 'v1';

相当于:

var myObj = {},
myKey = 'n1',
myVal = 'v1';

myObj[myKey] = myVal;

关于javascript - 好奇 : is it possible to have dynamic Ajax data variable names?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1304980/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com