DotNetNuke的 - 如何调用代码的方法与阿贾克斯

问题描述:

这背后是脚本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但它仍然无法正常工作!

您无法从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

谢谢你,我觉得这对我的工作。感谢您的信息。 –