javascript - 在 foreach 中的按钮单击值
问题描述
在我的 Ajax 调用中,我想传递两个在按钮单击时获得的参数:
$('.button').on('click', function (e) {
var id = $(this).data("id");
var name = $(this).data("name");
e.preventDefault();
process.forEach(performStep);
});
这个过程是一个数组,我正在循环遍历以在 forEach 中执行调用:
var process = [
{
"url" : "/api/first/call",
"text" : "First call "
},
{
"url" : "/api/second/call",
"text" : "Second call "
}
];
最后是 Ajax 代码:
function performStep(value, index, array)
{
$.ajax({
type: 'POST',
url: value.url,
data: JSON.stringify({
'id': id,
'name': name
}),
processData: false,
contentType: 'application/json-patch+json',
success: function () {
}
},
error: function (xhr) {
}
});
}
当我将它放在函数参数中时,它不会捕获它们。如何在 performStep() 函数中传递它?当我console.log()
点击 .button() 类时,我会返回它们。
试图将它们添加到process.forEach(performStep); 但它不会工作。我对 JS、Ajax 和 jQuery 很陌生,所以也许我遗漏了什么?
解决方案
您当前代码的问题是您通过引用performStep
传递给。这意味着传递给处理函数(和)的参数作为参数提供。但是,您的函数似乎期望来自外部范围的and值。forEach()
forEach()
currentValue
index
array
id
name
要传递id
和name
值,您需要将它们作为参数包含在函数调用和定义中:
var process = [{
"url": "/api/first/call",
"text": "First call "
}, {
"url": "/api/second/call",
"text": "Second call "
}];
$('.button').on('click', function(e) {
var id = $(this).data("id");
var name = $(this).data("name");
e.preventDefault();
process.forEach(function(obj) {
performStep(obj, id, name);
});
});
function performStep(value, id, name) {
console.log(value);
console.log(id);
console.log(name);
// ajax request...
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button class="button" data-id="foo" data-name="bar">Click me</button>
<button class="button" data-id="fizz" data-name="buzz">Click me</button>
推荐阅读
- javascript - 一页上的许多多个图像上传按钮的相同jquery
- node.js - Node.js - 异步 - if 语句中的多个内部回调
- orientdb - 是否可以在 orientjs 中使用带有 Classes API 的事务?
- javascript - Giphy API调用乱序返回结果
- php - PHP在重定向之前加载页面
- java - 无法为情况编写 Antlr3 规则
- python - 在Django中提交表单时如何保留现有的查询字符串?
- java - Spring Boot 版本从 1.5.8 更改为 2.0.0
- angular - 如何在 ionic 3 中使用日期选择器插件
- proxy - 如何使用 CUBA Studio 创建应用程序?