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 です。
ここで何が起こっているのかわかりません。