asp.net页面没有返回ajax请求

时间:2013-02-18 19:33:44

标签: asp.net ajax

我正在尝试从ASP.NET Gridview行发送一个AJAX请求。 gridview中的每一行都显示已完成的作业。某些作业包含可以下载的文件。这里的最终目标是在彩盒覆盖中显示下载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中观看页面时,我看到请求转到GetFiles函数,订单号为{'orderID':'10000315'}

POST http://localhost:57210/AMSSite/Customer/CompletedOrdersNew.aspx/GetFiles

但调用不会触发GetFiles函数,而我得到的响应是页面html。

不确定这里发生了什么。

3 个答案:

答案 0 :(得分:1)

尝试将orderID作为数字发送,因为webmethod期望int,JSON键和字符串也引用双引号("

data: "{\"orderID\":" + orderID + "}",

答案 1 :(得分:1)

您在contentType选项中输了一个拼写错误。应该是:contentType: "application/json; charset=utf-8"

答案 2 :(得分:0)

我会回答我的问题,因为其他任何VB.NET / ASP.NET人都遇到了这个问题。除了我的拼写错误之外,这里的问题是我的WebMethod功能是ByRef。它必须是 BYVAL 。在将我的头撞到墙上并阅读javascript和json服务的一些好东西后,我在http://projectsmm.com/technet/asp/index.shtml找到了真正的答案。 VB.Net默认将函数变量设置为ByRef。出于某种原因,.NET Web服务不接受这一点。改为ByVal并且有效。

希望这有助于其他人不花时间看我。