У меня возникли проблемы с отправкой сообщения в WebMethod
Часть находится в ascx, поэтому URL-адрес является родительской страницей, или же существует только 404
У меня код JQ
$("#saveCanvas").click(function () {
var image = document.getElementById("SolutionDisplay").toDataURL("image/png");
image = image.replace('data:image/png;base64,', '');
$.ajax({
type: 'POST',
url: "Student.aspx/UploadImage",
data: '{ "imageData" : "' + image + '" }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
alert('Image saved successfully !');
}
});
});
вызывается из кнопки
<input type="button" id="saveCanvas" name="saveCanvas" value="Save Image" />
но я продолжаю получать 500 ошибок, вроде этого
POST http://localhost:83/Student.aspx/UploadImage 500 (Internal Server Error) jquery-1.10.2.js:8720
send jquery-1.10.2.js:8720
jQuery.extend.ajax jquery-1.10.2.js:8150
(anonymous function) Student.aspx?Page=Assignment&&CourseID=14:709
jQuery.event.dispatch jquery-1.10.2.js:5109
elemData.handle jquery-1.10.2.js:4780
Может ли это иметь какое-то отношение к GET url?
http://localhost:83/Student.aspx?Page=Assignment&&CourseID=14
код сервера должен быть простым
на классе есть
[ScriptService]
и в классе есть "обработчик",
static string PathTest = @"D:\";
[WebMethod()]
public static void UploadImage(string imageData)
{
string fileNameWitPath = PathTest + DateTime.Now.ToString().Replace("/", "-").Replace(" ", "- ").Replace(":", "") + ".png";
using (FileStream fs = new FileStream(fileNameWitPath, FileMode.Create))
{
using (BinaryWriter bw = new BinaryWriter(fs))
{
byte[] data = Convert.FromBase64String(imageData);
bw.Write(data);
bw.Close();
}
}
}
Я решил это. проблема заключалась в использовании ajax под usercontroll. переместил методы в родительский aspx, и он работал красиво.
image
в вашем коде ajax? Что это значит?