Javascript Ajax从不调用我的.NET方法?
您好,我有下面的AJAX,它引用了我的.aspx页面中的一个方法。我做了一些控制台调试,我的data.d总是未定义的。因此,我在引用的方法的第一行的.aspx页面中放置了一个断点,它从未命中它 我真的被卡住了,所以如果有人能给我指出正确的方向那就太好了 阿贾克斯: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
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