我的 JS 技能很差,我正在尝试从教程中将这个东西组合在一起。话虽如此,我不明白为什么这不起作用。
如何在每个循环中传递和引用 JSON 对象?
<script type="text/javascript">
var jsonData = '["{ staffid :41, firstname :Joe, lastname :Blow}", "{ staffid :42, firstname :Lucy, lastname :Goosey}"]';
var jsonParsed = JSON.parse(jsonData);
jQuery(document).ready(function(){
jQuery.each(jsonParsed, function(index, value){
jQuery.ajax({
type:'get',
async:false,
url: 'genpdf.php?staffid=' + value.staffid,
success: function (data) {
$("#status").append("<li>Successfully generated PDF for " + value.firstname + " " + value.lastname + " (StaffID: " + value.staffid + ")</li>");
},
error: function (xhr, textStatus, errorThrown){
$("#status").append("<li>PDF genetration failed for " + value.firstname + " " + value.lastname + " (StaffID: " + value.staffid + ") with status (" + textStatus + ") and error (" + errorThrown + ")</li>");
}
})
});
最佳答案
var jsonData = '["{ staffid :41, firstname :Joe, lastname :Blow}", "{ staffid :42, firstname :Lucy, lastname :Goosey}"]'
此 JSON 字符串不包含您认为的内容。解析时,您将拥有一个包含 2 个对象的数组。如果您想要一个对象数组,它应该如下所示:
var jsonData = '[{"staffid": 41, "firstname": "Joe", "lastname": "Blow"}, {"staffid": 42, "firstname": "Lucy", "lastname": "Goosey"}]'
当您解析它时,它应该按您的预期工作。
另外,为什么这里有一个 JSON 字符串?为什么不使用 JavaScript 数组/对象文字。
var data = [{staffid: 41, firstname: "Joe", lastname: "Blow"}, {staffid: 42, firstname: "Lucy", lastname: "Goosey"}];
附注我强烈建议不要使用async:false
。这将使浏览器锁定,直到 AJAX 调用完成。在完成之前,您将无法与页面(也可能是浏览器)进行交互。这根本不是很好的用户体验。
关于javascript - jQuery 中的 JSON 每个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21118120/