我正在尝试从 ASP.NET Gridview 行发送 AJAX 请求。网格视图中的每一行都显示已完成的作业。某些作业具有可以下载的文件。这里的最终目标是在颜色框叠加层中显示下载 url,但我现在无法将文件列表返回到基本页面。为了显示有要从订单下载的文件,我在订单号列中取消隐藏按钮控件。页面上的Javascript如下。
$(document).ready(function () {
$("#<%=gvMessenger.ClientID%> input").filter(":not(:has(table, th))").click(function (e) {
e.preventDefault();
var $cell = $(e.target).closest("td");
//$("#<%=gvMessenger.ClientID%> td").removeClass("highlight"); $cell.addClass("highlight"); $("#message").text('You have selected: ' + $cell.text());
$("#Message").html("");
var orderID = $cell.text()
orderID = $.trim(orderID);
sendData(orderID);
function sendData(orderID) {
var loc = window.location.href;
loc = (loc.substr(loc.length - 1, 1) == "/") ?
loc + "CompletedOrdersNew.aspx" : loc;
$.ajax({
type: "POST",
url: loc + "/GetFiles",
data: "{'orderID':'" + orderID + "'}",
contentType: "application/jason; charset=utf-8",
datatype: "json",
success: function (msg) {
$("ContentArea").html(msg.d);
},
error: function () {
alert("An error occured in getting your files.");
}
});
}
});
});
应在 ajax 请求上触发的页面代码隐藏函数如下所示。
<WebMethod()> _
Public Shared Function GetFiles(ByRef orderID As Integer) As String
Dim dict As New Dictionary(Of String, Object)
Dim dt As DataTable
dt = Dac.ExecuteDataTable("GetS3Files", Parameter("@OrderID", orderID))
Dim arrr(dt.Rows.Count) As Object
For i As Integer = 0 To dt.Rows.Count - 1
arrr(i) = dt.Rows(i).ItemArray
Next
Dim json As New JavaScriptSerializer
Return json.Serialize(dict)
End Function
在 FireBug 中观看页面时,我看到请求以 orderID 号 {'orderID':'10000315'} 发送到 GetFiles 函数
POST http://localhost:57210/AMSSite/Customer/CompletedOrdersNew.aspx/GetFiles
但是调用不会触发 GetFiles 函数,我得到的响应是页面 html。
不知道这里发生了什么。