2017-07-13 95 views
0

這背後是腳本DotNetNuke的 - 如何調用代碼的方法與阿賈克斯

<script type="text/jscript"> 
function ajaxcall(e) { 
    $.ajax({ 
     type: "POST", 
     url: "/DesktopModules/Modules/Admin/City/AddCity.ascx/GetMethod", 
     contentType: "application/json; charset=utf-8", 
     data: JSON.stringify({ value: "Vinay" }), 
     dataType: "json", 
     success: function (value) { 
      alert(value.d); 
     }, 
     error: function() { alert("Ajax Error"); } 
    }); 
}; 

這是後面的代碼:

[WebMethod] 
    public static string GetMethod(String value) 
    { 
     return value; 
    } 

,當我從按鍵通話功能。這表明JS提醒Ajax Error

<input type="button" id="button" value="Test" onclick="ajaxcall()" /> 

我試圖取代通過AddCity.ascx/GetMethod/DesktopModules/Modules/Admin/City/AddCity.ascx/GetMethod但它仍然無法正常工作!

回答

1

您無法從ASCX usercontrol調用WebMethod - IIS不會允許它。它必須位於ASPX頁面中。

如果您不需要任何安全性,您可以創建一個通用處理程序(.ASHX文件)。

public class CityHandler : IHttpHandler 
{ 
    public void ProcessRequest(HttpContext context) 
    { 
     var fn = context.Request.QueryString["action"]; 
     var newCity = context.Request.QueryString["city"]; 

     if (fn == "add") 
     { 
      // TODO: add city 
     } 
     context.Response.ContentType = "text/plain"; 
     context.Response.Write("OK"); 
    } 

    public bool IsReusable 
    { 
     get { return false; } 
    } 
} 

然後改變你的Ajax代碼:

$.ajax({ 
    type: "GET", 
    url: "/DesktopModules/Modules/Admin/City/CityHandler.ashx?action=add&city=Vinay", 
    success: function (value) { 
     alert(value); 
    }, 
    error: function() { alert("Ajax Error"); } 
}); 
+0

謝謝你,我覺得這對我的工作。感謝您的信息。 –