任何人都知道为什么此错误消息可能出现在控制台中以供下面的代码使用?我点击了它所说的问题的链接,然后它拉出了这一行:“$('tr')。each(function(){”。
(这可能比需要的代码多一些,但我不确定问题在哪里,所以我把它全部包括在内)
function buildData() {
var data = {
"Id": 0,
"CompanyId": companyId,
"Date": $('#invoiceDate').val(),
"Reference": $('#invoiceReference').val(),
"Description": $('#additionalDetails').val(),
"DeliveryAddress": {
"Contact": $('#companyName').val(),
"Address1": $('#address1').val(),
"Address2": $('#address2').val(),
"Address3": $('#address3').val(),
"Address4": $('#address4').val(),
"Address5": $('#address5').val(),
"Postcode": $('#postcode').val()
},
"InvoiceAddress": {
"Contact": $('#companyName').val(),
"Address1": $('#address1').val(),
"Address2": $('#address2').val(),
"Address3": $('#address3').val(),
"Address4": $('#address4').val(),
"Address5": $('#address5').val(),
"Postcode": $('#postcode').val()
},
"AllocatedToCredit": true,
"Comments": "",
"ContactId": $('#projectSelect').val(),
"Items": [
{
$('tr').each(function() {
"Id": 0,
"Number": 0,
"Type": 0,
"Description": $(this).find('.itemDetailsOutput').val(),
"NominalId": $(this).find('.nominalCodeId').val(),
"ProductId": 0,
"Quantity": $(this).find('.quantityOutput').val(),
"UnitPrice": {
"BaseValue": $(this).find('.unitPriceOutput').val(),
"ForeignValue": 0,
"CurrencyId": 0,
"BaseFormatString": "",
"ForeignFormatString": ""
},
"TaxCodeId": $('.taxCodeId').val(),
"TaxRate": $('.taxRate').val(),
"Subtotal": {
"BaseValue": $(this).find('.subtotalOutput').val(),
"ForeignValue": 0,
"CurrencyId": 0,
"BaseFormatString": "",
"ForeignFormatString": ""
},
"Tax": {
"BaseValue": $(this).find('.taxTotalOutput').val(),
"ForeignValue": 0,
"CurrencyId": 0,
"BaseFormatString": "",
"ForeignFormatString": ""
},
"RechargeableExpenseId": 0,
"Comments": "",
"DiscountedByItemId": 0,
"DiscountedItemId": 0,
"AnalysisCodes": [
0
],
"IndentLine": true,
"NominalName": $(this).find('.nominalCodeName').val(),
"TaxCodeName": $(this).find('.taxCodeName').val(),
"TimesheetId": 0,
"RechargeableEmployeeExpenseId": 0,
"TaxOverridden": false,
"CisDeductionType": 0,
"TransactionId": 0,
"Reserved": 0
})
}
],
"InvoiceType": 0,
}
}
function saveInvoice() {
var data = buildData();
JA.put("api/" + companyId + "/Invoicing", data, function(response) {
console.log(response);
})
}
$('#saveInvoice').click(function() {
saveInvoice();
})
});
答案 0 :(得分:0)
您无法在对象中间放置each()
个调用。对象的语法意味着密钥必须放在您尝试运行each()
循环的位置,密钥必须是关键字或字符串文字。
要解决此问题,您可以先从tr
元素构建一个数组,然后将其作为Items
属性的值提供,如下所示:
var items = $('tr').map(function() {
return {
"Id": 0,
"Number": 0,
"Type": 0,
"Description": $(this).find('.itemDetailsOutput').val(),
"NominalId": $(this).find('.nominalCodeId').val(),
"ProductId": 0,
// other properties...
}
}).get();
var data = {
// other properties...
"Items": items,
// some more properties...
}
答案 1 :(得分:0)
{} - 意味着您定义" object" 它由对键组成:值。
你应该在每个之前添加密钥;)
{
res: $('tr').each( ...