繁体   English   中英

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

[英]asp.net page not returning ajax request

我试图从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。

不知道这里发生了什么。

尝试将orderID作为数字发送,因为webmethod需要一个int,同样在JSON键和字符串中引用双引号( "

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM