使用JQuery创建javascript函数
我正在从服务器获取JSon数据,并用这些数据构建一个表。表的最后一列是一个按钮,它将从所选行抓取字段以填充其他字段,但返回:ReferenceError:response.DATA未定义使用JQuery创建javascript函数,javascript,Javascript,我正在从服务器获取JSon数据,并用这些数据构建一个表。表的最后一列是一个按钮,它将从所选行抓取字段以填充其他字段,但返回:ReferenceError:response.DATA未定义 response = JSON.parse(response); $('.myDiv').empty(); // Header var table = '<table class="table table-striped"><thead><tr>&l
response = JSON.parse(response);
$('.myDiv').empty();
// Header
var table = '<table class="table table-striped"><thead><tr><th>First Name</th><th>Last Name</th><th>City</th><th>State</th><th>ZIP</th><th>Action</th></tr></thead><tbody>';
var i;
for(i=0; i<response.ROWCOUNT; i++){
table += '<tr>';
table += '<td>' + response.DATA.PROVIDERFIRSTNAME[i] + '</td>';
table += '<td>' + response.DATA.PROVIDERLASTNAME[i] + '</td>';
table += '<td>' + response.DATA.PROVIDERCITY[i] + '</td>';
table += '<td>' + response.DATA.PROVIDERSTATE[i] + '</td>';
table += '<td>' + response.DATA.PROVIDERPOSTALCODE[i] + '</td>';
table += '<td><input type="button" class="btn btn-primary" value="select" onClick="setData(response.DATA, i);" /></td>';
table += '</tr>';
}
table += '</tbody></table>';
$('.myDiv').append(table);
您使用的是内联处理程序,而内联处理程序只能引用全局变量。改为使用Javascript正确地附加侦听器,以便它可以正确地引用变量(最重要的是,
response
和i
)。还要确保i
的块作用域为let
,而不是函数作用域
您还可以考虑使用模板文字来使代码更易于阅读:
// Header
const $table = $('<table class="table table-striped"><thead><tr><th>First Name</th><th>Last Name</th><th>City</th><th>State</th><th>ZIP</th><th>Action</th></tr></thead><tbody></tbody>');
// make sure to use "let i" here
for (let i = 0; i < response.ROWCOUNT; i++) {
const $row = $(`
<tr>
<td>${response.DATA.PROVIDERFIRSTNAME[i]}</td>
<td>${response.DATA.PROVIDERLASTNAME[i]}</td>
<td>${response.DATA.PROVIDERCITY[i]}</td>
<td>${response.DATA.PROVIDERSTATE[i]}</td>
<td>${response.DATA.PROVIDERPOSTALCODE[i]}</td>
<td>${response.DATA.PROVIDERPOSTALCODE[i]}</td>
<td><input type="button" class="btn btn-primary" value="select"/></td>
</tr>
`);
$row.find('input').on('click', () => {
console.debug(response.DATA.PROVIDERFIRSTNAME[i]);
});
$table.find('tbody').append($row);
}
$('.myDiv').append(table);
//头
const$table=$('First name last name citystatezipaction');
//确保在这里使用“让我来”
for(设i=0;i{
console.debug(response.DATA.PROVIDERFIRSTNAME[i]);
});
$table.find('tbody').append($row);
}
$('.myDiv')。追加(表);
拼写问题-确保使用PROVIDERFIRSTNAME
而不是PROVIDERFIRTNAME
内联处理程序被普遍认为是一种糟糕的做法-最好尽可能避免它们。为什么要定义
response.DATA
response
是通过解析以前作为JSON保存的response
来填充的,但我们不知道这是什么。当您记录response
时,它的值是什么?我打赌您正在尝试从内到外读取数组。太棒了。非常感谢。只需更改为$('.myDiv').append($table);您能解释一下$Variable=$('')是如何工作的吗?它创建元素及其内部HTML,并将其全部放入jQuery集合中,允许您对其使用jQuery方法。非常感谢。
// Header
const $table = $('<table class="table table-striped"><thead><tr><th>First Name</th><th>Last Name</th><th>City</th><th>State</th><th>ZIP</th><th>Action</th></tr></thead><tbody></tbody>');
// make sure to use "let i" here
for (let i = 0; i < response.ROWCOUNT; i++) {
const $row = $(`
<tr>
<td>${response.DATA.PROVIDERFIRSTNAME[i]}</td>
<td>${response.DATA.PROVIDERLASTNAME[i]}</td>
<td>${response.DATA.PROVIDERCITY[i]}</td>
<td>${response.DATA.PROVIDERSTATE[i]}</td>
<td>${response.DATA.PROVIDERPOSTALCODE[i]}</td>
<td>${response.DATA.PROVIDERPOSTALCODE[i]}</td>
<td><input type="button" class="btn btn-primary" value="select"/></td>
</tr>
`);
$row.find('input').on('click', () => {
console.debug(response.DATA.PROVIDERFIRSTNAME[i]);
});
$table.find('tbody').append($row);
}
$('.myDiv').append(table);