【发布时间】:2019-01-23 17:35:33
【问题描述】:
我正在尝试从 JSON 响应中获取一些条目 https://jsonplaceholder.typicode.com/posts 通过使用 jQuery 和 ajax() 方法选择复选框。
我可以使用 Chrome DevTools 看到发出了 2 个请求,一个是“文档”类型,一个是“XHR”类型。对于第一个响应是正确的,但对于第二个没有响应。它们是这样的:
请求网址:https://jsonplaceholder.typicode.com/posts?userId%5B%5D=3&userId%5B%5D=4 带有查询字符串参数: 用户 ID[]: 3 用户 ID[]: 4
请求网址:https://jsonplaceholder.typicode.com/posts?userId=3&userId=4 带有查询字符串参数: 用户ID:3 用户 ID:4
这就是我的 HTML、JavaScript 和 jQuery 的样子:
HTML
<form id="myForm" action="https://jsonplaceholder.typicode.com/posts">
<input type="checkbox" id="Checkbox1" name = "userId" value = "1" />
<input type="checkbox" id="Checkbox2" name = "userId" value = "2" />
<input type="checkbox" id="Checkbox3" name = "userId" value = "3" />
<input type="checkbox" id="Checkbox4" name = "userId" value = "4" />
<input type="button" id="demo" value = "Demo" />
<input type="submit" id="submit">
</form>
JavaScript+ jQuery
var url = "https://jsonplaceholder.typicode.com/posts";
$("#submit").click(function() {
var allVals = new Array();
$("input:checkbox[name=userId]:checked").each(function () {
allVals.push($(this).val());
console.log(allVals);
$.ajax({
url: url,
data: {
userId: allVals
},
type: "GET",
dataType: "json",
})
.done(function (json) {
console.log(json);
});
});
});
在 jQuery 文档中声明“数据”选项必须是对象或查询字符串。但是我有一个数组。那么我该如何处理这种情况呢?我已经尝试了一些东西,但我无法让它工作。为什么第一个请求是正确的? (我实际上不需要它)我怎样才能只启动 XHR 请求?
【问题讨论】:
标签: jquery ajax checkbox xmlhttprequest