【发布时间】:2016-10-12 13:25:29
【问题描述】:
您好,我有以下 AJAX,它在我的 .aspx 页面中引用了一个方法。我已经进行了一些控制台调试,并且我的 data.d 始终未定义。因此,我在 .aspx 页面中引用的方法的第一行放置了一个断点,但它从未命中它。
我真的被困住了 - 所以如果有人能指出我正确的方向,那就太好了。
AJAX:
var param = { "mySearchString": str };
$.ajax({
type: 'POST',
url: 'myForm.aspx/myMethod',
data: JSON.stringify(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();
}
}
});
我的 .NET 方法的初始设置:
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
[WebMethod(EnableSession = true)]
public static IEnumerable<MyItem> myMethod(string searchString)
{
我传递了正确的类型,并且在构建或运行它时没有错误。所以我有点难过!
【问题讨论】:
-
您的服务器似乎没有返回任何内容?
-
在我的 .NET 方法中,我调用了一个存储过程,然后我返回了结果 - 如果存储过程错误,我可以调试,但如果我有,我不知道为什么它永远不会命中的方法中的断点?我在ajax中引用方法的方式有问题吗? 'url:'myForm.aspx/myMethod''
-
var param = { "mySearchString": str };尝试将“mySearchString”更改为“searchString”,使其与 c# 方法中的名称匹配。
-
首先确认您的 .NET 代码将任何响应返回给 AJAX 调用,并使用 data.responseText 来获取响应数据
-
尝试使用 PostMan 或 Fiddler 并首先使用它来调试您的 .net 代码。一旦你开始着手尝试让你的 jquery 代码的 ajax 调用工作。这将帮助您将测试隔离到仅您的 .net 代码。此外,您应该共享 .net 类的其余部分,以及您对 Web 服务的任何配置。最后尝试使用简单的
HttpGet方法并调用以查看是否可以使其工作,然后逐步使用HttpPost,然后使用带参数的HttpPost。我提倡小步走,从小处着手,逐步建立,这样您就可以排除问题所在。
标签: javascript c# jquery asp.net ajax