Как я могу сохранить строку BASE64 в виде файла через ajax.post и предотвратить обновление сайта?
Привет!
Я использую элемент управления пользовательским интерфейсом для захвата подписи клиента. Элемент управления возвращает строку BASE64, и поскольку мне нужно добавить изображение в документ (word mail merge) Сначала мне нужно сохранить подпись.
Мой текущий код работает, но так как я отображаю элемент управления сигнатурой в модальном режиме, я должен предотвратить обновление страницы, чтобы иметь возможность добавить другую подпись или изменить некоторые другие поля, которые передаются в поля слияния почты.
Я заметил, что страница обновляется только тогда, когда я действительно сохраняю файл, а не из-за действия Ajax POST в целом.
Это то, что у меня есть до сих пор:
Контроллер:
[HttpPost] public JsonResult SaveImage(string imageString) { string base64 = imageString.Substring(imageString.IndexOf(',') + 1); base64 = base64.Trim('\0'); byte[] img = Convert.FromBase64String(base64); Image image; using (MemoryStream ms = new MemoryStream(img)) { image = Image.FromStream(ms); image.Save(Server.MapPath("~/Template/Contract/lgeber.png"), System.Drawing.Imaging.ImageFormat.Png); } return Json("OK"); }
Как только появится изображение.Сохранение выполняется, страница обновляется.
В jQuery:
$('#saveSignLgeber').on("click", function () { var signLgeber = $("#signLgeber").ejSignature("instance"); lgeberImageString = signLgeber.storeSnap[signLgeber.storeSnap.length - 1] $.ajax({ url: "/Doc/SaveImage", type: "POST", data: JSON.stringify({ imageString: lgeberImageString }), processData: false, contentType: 'application/json' }); $('#signLgeberModal').modal('hide'); $('#signLnehmerModal').modal('show'); });
Что я уже пробовал:
Я попытался добавить:
<form>к моему коду и использованию
function(e){ e.preventDefault() }
Я также попытался использовать onclick=return false; для кнопки и установить тип кнопки в button.
Ничего не работает. Он все еще обновляет страницу все время.
Есть идеи?