Javascript Getting对象不支持$.post上的此操作错误
下面是我的javascript方法:Javascript Getting对象不支持$.post上的此操作错误,javascript,asp.net-mvc,Javascript,Asp.net Mvc,下面是我的javascript方法: function AssignDebtor(e) { var dataItem = this.dataItem($(e.currentTarget).closest("tr")); var debtorId = dataItem.Id; $.post({ url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.post({
url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
data: new { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
success: function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
dataType: 'json'
});
}
在运行时,调试器在$.post行停止,并返回以下错误:
0x800a01bd-JavaScript运行时错误:对象不支持此操作
行动
debtorId成功获取其值。我构造方法的方式可能有问题吗?
$。post
不允许传入javascript对象,它需要更多的强类型方法参数。试试这个:
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.ajax({
type: 'POST',
url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
data: { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
success: function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
dataType: 'json'
});
}
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.post('@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
{ unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
'json'
);
}
。。。或者,如果您偏爱$.post
,您可以这样做:
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.ajax({
type: 'POST',
url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
data: { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
success: function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
dataType: 'json'
});
}
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.post('@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
{ unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
'json'
);
}
注意:我还从参数对象中取出了
new
关键字。$。post
不允许您传入javascript对象,它需要更强类型的方法参数。试试这个:
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.ajax({
type: 'POST',
url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
data: { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
success: function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
dataType: 'json'
});
}
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.post('@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
{ unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
'json'
);
}
new { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId }
。。。或者,如果您偏爱$.post
,您可以这样做:
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.ajax({
type: 'POST',
url: '@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
data: { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
success: function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
dataType: 'json'
});
}
function AssignDebtor(e) {
var dataItem = this.dataItem($(e.currentTarget).closest("tr"));
var debtorId = dataItem.Id;
$.post('@Url.Action("AssignDebtorToUnallocatedReceipt", "Debtor")',
{ unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId },
function (result, textStatus, jqXHR) {
if (result.success) {
var window = $("#LookupDebtorWindow").data("kendoWindow");
window.close();
var grid = $("#UnallocatedReceiptsGrid").data("kendoGrid");
grid.dataSource.read();
}
else {
alert(result.error);
}
},
'json'
);
}
注意,我还从参数对象中取出了new
关键字
new { unallocatedReceiptId : cdcUnallocatedReceiptId, debtorId : debtorId }
看起来像是语法错误,但不幸的是没有。相反,当您尝试使用对象(甚至不是函数)作为构造函数时,它会抛出您遇到的异常
只需省略这个选项
此外,正如@danludwig所提到的,具有不同的签名,不能将对象作为参数传入。而是切换到$.ajax
看起来像是语法错误,但不幸的是没有。相反,当您尝试使用对象(甚至不是函数)作为构造函数时,它会抛出您遇到的异常
只需省略这个选项
此外,正如@danludwig所提到的,具有不同的签名,不能将对象作为参数传入。而是切换到
$.ajax
您是否链接了jquery?它是发生在您的成功函数中,还是只发生在post声明本身?@JohnEcho yes jquery是链接的,因为没有jquery,代码肯定不会达到它所能达到的程度(使用剑道UI-此方法是在单击自定义网格命令按钮后执行的)@mattytommo它位于post声明本身。为什么要测试result.success(它不应该是jqXHR.success)在成功处理程序中?您是否链接了jquery?它是发生在您的成功函数中,还是仅仅发生在post声明本身?@JohnEcho yes jquery被链接,因为没有jquery代码肯定不会达到它所能达到的程度(使用Kendo UI-此方法是在单击自定义网格命令按钮后执行的)@mattytommo它位于post声明本身。为什么要在成功处理程序中测试result.success(不应该是jqXHR.success)呢?没有对象有名称,所有对象都是“匿名”的。你到底在代码中做了哪些更改?@Bergi好的,我不争辩,我删除了“anonymous”并替换为“javascript object”。我将其从$.post
更改为$.ajax
。还有一种替代方法,使用$.post
和单独的方法函数参数。没有对象有名称,所有对象都是“anonymous”。您在代码中到底做了哪些更改?@Bergi好的,我不会争辩,我删除了“anonymous”并替换为“javascript object”。我将其从$.post
更改为$.ajax
。还有一种替代方法是使用带有单独方法函数参数的$.post
。