У меня есть проект веб-сайта в .Net, и на определенной веб-странице я хочу использовать javascript (jquery / ajax) для выполнения простой обратной передачи после использования элемента управления палитрой цветов.
Яиспользуя EnablePageMethods=true
и WebMethod
в .Net для получения вызова, но он не срабатывает, и я не могу поймать его с точкой останова во время отладки.
Я использую мастер-страницу на веб-сайте, и я подозреваю, что она портит ответ.
Если я создаю чистый одностраничный тестовый проект с тем же кодом, он работает.
Я надеюсь, что кто-нибудь может помочь мне понять, в чем дело.
.Net-код в test.aspx.vb:
<Services.WebMethod(EnableSession:=True)>
Public Shared Function SaveColor2() As String
Return "hi"
End Function
JavaScript в тесте.aspx:
function RunCode2() {
$.ajax({
type: "POST",
url: "test.aspx/SaveColor2",
success: function (result) {
console.log(typeof (result)); //=string
console.log('res='+JSON.stringify(result));
},
error: function (result) {
console.log(typeof (result));
console.log('Error=' + JSON.stringify(result));
}
});
}
HTML:
<asp:ScriptManager runat="server" EnablePageMethods="true"></asp:ScriptManager>
<input type="color" id="favcolor" onchange="RunCode2();" value="#521252" />
Когда я запускаю тестовую страницу и щелкаю элемент управления палитрой цветов, я могу выбрать цвет и нажать кнопку «ОК». На данный момент я ожидаю возвращаемую строку со значением «привет». Однако возвращается следующее (при просмотре с помощью консоли отладки браузера):
res="\r\n\r\n<!DOCTYPE html>\r\n\r\n<html lang=\"en\">\r\n<head><meta charset=\"utf-8\" /><meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" /><title>\r\n\tProjekter - Service Tool\r\n</title><script src=\"/Scripts/modernizr-2.8.3.js\"></script>\r\n<link href=\"/Content/bootstrap.css\" rel=\"stylesheet\"/>\r\n<link href=\"/Content/Site.css\" rel=\"stylesheet\"/>\r\n<link href=\"../favicon.ico\" rel=\"shortcut icon\" type=\"image/x-icon\" /></head>\r\n<body>\r\n <form method=\"post\" action=\"./SaveColor2\" id=\"ctl01\">\r\n<div class=\"aspNetHidden\">\r\n<input type=\"hidden\" name=\"__EVENTTARGET\" id=\"__EVENTTARGET\" value=\"\" />\r\n<input type=\"hidden\" name=\"__EVENTARGUMENT\" id=\"__EVENTARGUMENT\" value=\"\" />\r\n<input type=\"hidden\" name=\"__LASTFOCUS\" id=\"__LASTFOCUS\" value=\"\" />\r\n<input type=\"hidden\" name=\"__VIEWSTATE\" id=\"__VIEWSTATE\" value=\"VQ3fGc48LqRx3LfWCkgUpQpWcYBgoEaVVDZJKrJ...
[+206 KB of data]
Страница возвращается со статусом 200 и успешно обработана. Я просто запутался по поводу возвращаемых данных.
Ps. Я также попытался выполнить обратную передачу, используя прямой JavaScript, используя вызов функции PageMethods.SaveColor2 ();