簡體   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