Asp.net Ajax请求失败,返回“0”;302已找到“;

Asp.net Ajax请求失败,返回“0”;302已找到“;,asp.net,ajax,web-services,Asp.net,Ajax,Web Services,我的Ajax调用没有执行web方法,而是返回状态代码“302 Found”。更进一步。。。检查跟踪显示该方法实际上是作为“选项”发送的 当web方法位于aspx文件中时,这一切都正常工作。当我将代码转换成用户控件时,我不得不将其移动到asmx Ajax调用: $.ajax({ type: "POST", //HTTP method url: '<%= ResolveUrl("http://tempuri.org/PLService.asmx/

我的Ajax调用没有执行web方法,而是返回状态代码“302 Found”。更进一步。。。检查跟踪显示该方法实际上是作为“选项”发送的

当web方法位于aspx文件中时,这一切都正常工作。当我将代码转换成用户控件时,我不得不将其移动到asmx

Ajax调用:

$.ajax({
            type: "POST", //HTTP method
            url: '<%= ResolveUrl("http://tempuri.org/PLService.asmx/getLocations")%>', //page/method name
            data: "{}", //json to represent argument
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: processData //handle the callback to handle response
        })
请求:

主持人:tempuri.org 用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;rv:37.0)Gecko/20100101 Firefox/37.0 接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,deflate 来源: 访问控制请求方法:POST 访问控制请求头:缓存控制,pragma 连接:保持活力 Pragma:没有缓存 缓存控制:没有缓存

响应标题:

主持人:tempuri.org 用户代理:Mozilla/5.0(Windows NT 6.1;WOW64;rv:37.0)Gecko/20100101 Firefox/37.0 接受:text/html、application/xhtml+xml、application/xml;q=0.9,/;q=0.8 接受语言:en-US,en;q=0.5 接受编码:gzip,deflate 来源: 访问控制请求方法:POST 访问控制请求头:内容类型 连接:保持活力 Pragma:没有缓存 缓存控制:无缓存

3件事:

  • 有一个有效的目标:

    [WebService(名称空间=”)]

  • 在asmx中声明Web方法时,不应将其声明为静态

  • 您需要使用[ScriptService]属性配置web服务,以处理来自客户端脚本的调用

    [System.Web.Script.Services.ScriptService]


  • 网站(“tempuri.org”是real target!?!)未正确响应请求。使用CORS,首先发送一个选项请求,以确保远程站点允许该请求。当然,这一点在指出之后变得显而易见。我把它改成了localhost,现在我打开了一个全新的蠕虫罐。
        [WebMethod]
            public static string getLocations()
            {
                System.Diagnostics.Debug.WriteLine("Getting Locations.");
                return "{\"region\":\"auckland\", \"city\":\"auckland\"}";
            }