проверено с предупреждением .. но вызов ajax не работает, а мой aspx.cs когда я меняю свою структуру .net с 3.5 на 4.0
моя функция ajax
function GetCustomers(pageIndex) {
$.ajax({
type: "POST",
url: "Webusers.aspx/GetCustomers",
data: '{searchTerm: "' + SearchTerm() + '", pageIndex: ' + pageIndex + '}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: OnSuccess,
failure: function (response) {
alert(response.d);
},
error: function (response) {
alert(response.d);
}
});
}
и мой метод .cs
[WebMethod(EnableSession = true)]
public static string GetCustomers(string searchTerm, int pageIndex)
{
string query = "SearchWebUserData";
if (!string.IsNullOrEmpty(HttpContext.Current.Request.Form["gender"]))
{
string sSeraachType = HttpContext.Current.Request.Form["gender"];
}
SqlCommand cmd = new SqlCommand(query);
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@SearchTerm", searchTerm);
cmd.Parameters.AddWithValue("@PageIndex", pageIndex);
cmd.Parameters.AddWithValue("@PageSize", PageSize);
cmd.Parameters.AddWithValue("@flag", "E");
cmd.Parameters.Add("@RecordCount", SqlDbType.Int, 4).Direction = ParameterDirection.Output;
return GetData(cmd, pageIndex).GetXml();
}
Также обратите внимание, что вам не нужно собирать строку JSON. Просто передайте объект jQuery, и он будет преобразовывать его в строку: data: { searchTerm: SearchTerm(), pageIndex: pageIndex }
он работал, когда это был framework 3.5
Вы проверяли в консоли браузера, что возвращается, есть ли ошибки? Также, когда / если вы отлаживаете и устанавливаете точку останова, происходит ли это? Если да, вы прошли через код?
он возвращает undefind
Вы пробовали alert(response) и смотрели, есть ли еще что-нибудь в ответе?
не только получить Undefine
И вы не можете установить точку останова и пройти через нее?
да, когда точка останова появляется на ajax, она просто пропускается





Прежде всего убедитесь, что у вас есть действительные сопоставления обработчиков в web.config, как показано ниже:
<system.web>
<httpHandlers>
<remove verb = "*" path = "*.asmx"/>
<add verb = "*" path = "*.asmx" validate = "false" type = "System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb = "*" path = "*_AppService.axd" validate = "false" type = "System.Web.Script.Services.ScriptHandlerFactory, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
<add verb = "GET,HEAD" path = "ScriptResource.axd" type = "System.Web.Handlers.ScriptResourceHandler, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" validate = "false"/>
</httpHandlers>
</system.web>
Просто передайте объект в jQuery, и он будет преобразован в строку за вас:
data: { 'searchTerm':"'+ SearchTerm()+'", 'pageIndex': "'+pageIndex+'" }
Вы отправляете "'+ SearchTerm()+'" и "'+pageIndex+'" как буквальные строковые значения в объекте во втором примере.
Изменение версии .Net framework не повлияет на код JS. Более вероятно, что C# сломан и возвращает 500. Я бы посоветовал проверить журнал в браузере, чтобы увидеть ответ, а затем пройти через ваш метод
GettCustomers(), чтобы найти, где ошибка.