Javascript Ajax从不调用我的.NET方法?

Javascript Ajax从不调用我的.NET方法?,javascript,c#,jquery,asp.net,ajax,Javascript,C#,Jquery,Asp.net,Ajax,您好,我有下面的AJAX,它引用了我的.aspx页面中的一个方法。我做了一些控制台调试,我的data.d总是未定义的。因此,我在引用的方法的第一行的.aspx页面中放置了一个断点,它从未命中它 我真的被卡住了,所以如果有人能给我指出正确的方向那就太好了 阿贾克斯: var param={“mySearchString”:str}; $.ajax({ 键入:“POST”, url:'myForm.aspx/myMethod', 数据:JSON.stringify(param), contentTy

您好,我有下面的AJAX,它引用了我的.aspx页面中的一个方法。我做了一些控制台调试,我的data.d总是未定义的。因此,我在引用的方法的第一行的.aspx页面中放置了一个断点,它从未命中它

我真的被卡住了,所以如果有人能给我指出正确的方向那就太好了

阿贾克斯:

var param={“mySearchString”:str};
$.ajax({
键入:“POST”,
url:'myForm.aspx/myMethod',
数据:JSON.stringify(param),
contentType:'application/json;charset=utf-8',
数据类型:“json”,
async:false,
成功:功能(数据){
$(“#MyResults”).empty();
控制台日志(数据);
console.log(data.d);
console.log(data.d.length);
对于(i=0;i”+data.d[i].title++”);
}
如果(data.d.length==0)
{
$(“#MyResults”).empty();
}
}
});
my.NET方法的初始设置:

[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod(EnableSession = true)]
public static IEnumerable<MyItem> myMethod(string searchString)
    {
[ScriptMethod(ResponseFormat=ResponseFormat.Json)]
[WebMethod(EnableSession=true)]
公共静态IEnumerable myMethod(字符串搜索字符串)
{

我正在传递正确的类型,并且在构建或运行时没有错误。因此我有点困惑!

尝试将此作为签名的一部分添加

[HttpPost]

尝试将此添加为签名的一部分

[HttpPost]

您可以将下面的属性添加到类中,这样就可以从ajax脚本调用web方法

[System.Web.Script.Services.ScriptService]

您可以将下面的属性添加到类中,这样就可以从ajax脚本调用web方法

[System.Web.Script.Services.ScriptService]
你有

var param = { "mySearchString": str }; 
但是方法中的参数是

public static IEnumerable<MyItem> myMethod(string searchString)
公共静态IEnumerable myMethod(字符串搜索字符串)
两个参数应具有相同的名称。

您有

var param = { "mySearchString": str }; 
但是方法中的参数是

public static IEnumerable<MyItem> myMethod(string searchString)
公共静态IEnumerable myMethod(字符串搜索字符串)

两个参数应具有相同的名称。

如果要将字符串作为参数传递,则应传递一个名为searchString的字符串属性对象:

var param = { "mySearchString": str }; 

$.ajax({

           type: 'POST',
           url: 'myForm.aspx/myMethod',
           data: param,
           contentType: 'application/json; charset=utf-8',
           dataType: 'json',
           async: false,
           success: function (data) {
                 $("#MyResults").empty();
                 console.log(data);
                 console.log(data.d);
                 console.log(data.d.length);
                 for (i = 0; i < data.d.length; i++) {
                     $("#MyResults").append("<li><a href='#' onClick='SetName(this)'>" + data.d[i].title + "</" + " a>" + "</" + "li>");
                 }

                  if (data.d.length == 0)
                       $("#MyResults").empty();
                  }

                });
var param={“mySearchString”:str};
$.ajax({
键入:“POST”,
url:'myForm.aspx/myMethod',
数据:param,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
async:false,
成功:功能(数据){
$(“#MyResults”).empty();
控制台日志(数据);
console.log(data.d);
console.log(data.d.length);
对于(i=0;i”+data.d[i].title++”);
}
如果(data.d.length==0)
$(“#MyResults”).empty();
}
});

如果要将字符串作为参数传递,则应传递具有名为searchString的字符串属性的对象:

var param = { "mySearchString": str }; 

$.ajax({

           type: 'POST',
           url: 'myForm.aspx/myMethod',
           data: param,
           contentType: 'application/json; charset=utf-8',
           dataType: 'json',
           async: false,
           success: function (data) {
                 $("#MyResults").empty();
                 console.log(data);
                 console.log(data.d);
                 console.log(data.d.length);
                 for (i = 0; i < data.d.length; i++) {
                     $("#MyResults").append("<li><a href='#' onClick='SetName(this)'>" + data.d[i].title + "</" + " a>" + "</" + "li>");
                 }

                  if (data.d.length == 0)
                       $("#MyResults").empty();
                  }

                });
var param={“mySearchString”:str};
$.ajax({
键入:“POST”,
url:'myForm.aspx/myMethod',
数据:param,
contentType:'application/json;charset=utf-8',
数据类型:“json”,
async:false,
成功:功能(数据){
$(“#MyResults”).empty();
控制台日志(数据);
console.log(data.d);
console.log(data.d.length);
对于(i=0;i”+data.d[i].title++”);
}
如果(data.d.length==0)
$(“#MyResults”).empty();
}
});

请删除以下属性,并删除
JSON.stringfy

 contentType: 'application/json; charset=utf-8',
 dataType: 'json',
请不要删除async,因为如果您将其设置为false,它将冻结您的UI

您可以这样做:

$.ajax({
   type: 'POST',
   url: 'myForm.aspx/myMethod',
   data: param, 
   success: function (data) {
         $("#MyResults").empty();
         console.log(data);
         console.log(data.d);
         console.log(data.d.length);
         for (i = 0; i < data.d.length; i++) {
             $("#MyResults").append("<li><a href='#' onClick='SetName(this)'>" + data.d[i].title + "</" + " a>" + "</" + "li>");
         }
         if (data.d.length == 0)
         {
            $("#MyResults").empty();
         }             
  }
});
$.ajax({
键入:“POST”,
url:'myForm.aspx/myMethod',
数据:param,
成功:功能(数据){
$(“#MyResults”).empty();
控制台日志(数据);
console.log(data.d);
console.log(data.d.length);
对于(i=0;i”+data.d[i].title++”);
}
如果(data.d.length==0)
{
$(“#MyResults”).empty();
}             
}
});

请删除以下属性,并删除
JSON.stringfy

 contentType: 'application/json; charset=utf-8',
 dataType: 'json',
请不要删除async,因为如果您将其设置为false,它将冻结您的UI

您可以这样做:

$.ajax({
   type: 'POST',
   url: 'myForm.aspx/myMethod',
   data: param, 
   success: function (data) {
         $("#MyResults").empty();
         console.log(data);
         console.log(data.d);
         console.log(data.d.length);
         for (i = 0; i < data.d.length; i++) {
             $("#MyResults").append("<li><a href='#' onClick='SetName(this)'>" + data.d[i].title + "</" + " a>" + "</" + "li>");
         }
         if (data.d.length == 0)
         {
            $("#MyResults").empty();
         }             
  }
});
$.ajax({
键入:“POST”,
url:'myForm.aspx/myMethod',
数据:param,
成功:功能(数据){
$(“#MyResults”).empty();
控制台日志(数据);
console.log(data.d);
console.log(data.d.length);
对于(i=0;i”+data.d[i].title++”);
}
如果(data.d.length==0)
{
$(“#MyResults”).empty();
}             
}
});

将此添加到ajax调用中,以查看有关错误的更多信息:

 error: function (request, status, error) {
                    alert('Error: ' + error);
                }

这是一个MVC应用程序吗?url应该是myForm.aspx/myMethod还是仅仅是myForm/myMethod?我想了解的是,您是否在服务器端遇到过断点,路径是否正确?

将此添加到ajax调用中,以查看有关错误的更多信息:

 error: function (request, status, error) {
                    alert('Error: ' + error);
                }
这是一个MVC应用程序吗?url应该是myForm.aspx/myMethod还是仅仅是myForm/myMethod?我想了解的是,您是否在服务器端遇到过断点,路径是否正确?

我在这里找到了答案:

我犯了这个错误:

对象{消息:Ajax错误:“身份验证失败”。StackTrace: null,ExceptionType:“System.InvalidOperationException”}

结果证明我需要做:

内部
~/App\u启动/RouteConfig.cs
cha