Функциональность Автосохранения Ajax

я написал очень (!) Маленький вспомогательный метод вокруг adobereader для массовой печати pdf из c # ...:

  public static bool Print(string file, string printer) {
     try {
        Process.Start(
           Registry.LocalMachine.OpenSubKey(
                @"SOFTWARE\Microsoft\Windows\CurrentVersion" +
                @"\App Paths\AcroRd32.exe").GetValue("").ToString(),
           string.Format("/h /t \"{0}\" \"{1}\"", file, printer));
        return true;
     } catch { }
     return false;
  }

нельзя полагаться на возвращаемое значение метода btw .. .

28
задан 14 revs, 2 users 77% 12 December 2012 в 18:34
поделиться

6 ответов

Автосохранение должно быть довольно простым в реализации, и вы можете использовать один из основных такие фреймворки, как jquery или mootools. Все, что вам нужно сделать, это использовать window.setTimeout () после того, как ваш пользователь редактирует что-то, что должно быть автоматически сохранено, и чтобы этот тайм-аут вызывал стандартный материал AJAX фреймворка javascript.

Например (с jquery):

var autosaveOn = false;
function myAutosavedTextbox_onTextChanged()
{
    if (!autosaveOn)
    {
        autosaveOn = true;

        $('#myAutosavedTextbox').everyTime("300000", function(){
             $.ajax({
                 type: "POST",
                 url: "autosavecallbackurl",
                 data: "id=1",
                 success: function(msg) {
                     $('#autosavenotify').text(msg);
                 }
             });
        }); //closing tag
    }
}
47
ответ дан 28 November 2019 в 02:45
поделиться

Я бы посоветовал вам использовать jQuery. Часть "сохранения", конечно, все еще должна выполняться на бэкэнде, но jQuery упрощает отправку запросов AJAX.

Если у вас есть серверная часть ASP.NET, вы можете просто вызвать WebMethod и отправить связанный строка (содержимое текстового поля и т. д.) через указанный интервал:

[WebMethod]
public void AutoSave(String autoSaveContent)
{
 // Save
}

Запрос jQuery для вызова этого метода будет:

$.ajax({  
type: "POST",  
contentType: "application/json; charset=utf-8",  
url: "AutoSaveService.asmx/AutoSave", 
data: "{textBoxToAutosaveText}",  
dataType: "json"
});  

Вот и все. Вы можете найти jQuery на сайте http://jquery.com/ .

0
ответ дан 28 November 2019 в 02:45
поделиться

Вы можете сэкономить на установленном времени, используя тайм-аут, но лучшим методом может быть просто какой-то обработчик событий onchange, чтобы при изменении данных, если у вас нет t сохраняются в течение установленного периода времени, затем сохраняются, но не экономят при каждом нажатии клавиши.

Итак, вы посмотрите, когда вы в последний раз сохраняли, перед вызовом функции ajax.

Это позволит вам сохраняйте только при необходимости, но с заданной скоростью. Итак, если вы хотите сохранять каждые 5 минут, то независимо от того, какие изменения были внесены, если изменение было сделано в течение этого 5-минутного окна, которое вы сохраняете.

Выполнение вызова ajax тривиально, но jQuery может его упростить. К сожалению, чтобы получить то, что вы хотите, из того, что я видел, вам нужно просто реализовать свои собственные функции. Это сложно сделать в общих чертах, так как разные люди могут захотеть сохранить, если будут изменены только определенные поля. Таким образом, просто потому, что я нажимаю на поле выбора, это может не привести к функции сохранения, но изменение чего-либо в текстовом поле может.

3
ответ дан 28 November 2019 в 02:45
поделиться

synchronize - это плагин jquery , который добавляет функциональные возможности вашей html-странице для периодической автоматической отправки пользовательского ввода обратно на сервер. ( исходный код )

Пример JavaScript и HTML:

<script>
  $("input").synchronize();
</script>

<input type="text" value="initial_value" 
       class="{url:'/entity.cfc?method=updateDescription',data:{ID1:'1',ID2:'2'}}" />

результирующий запрос ajax после задержки по умолчанию в 1 с:

http://localhost/entity.cfc?method=updateDescription&value=update_value&preVal=initial_value&ID1=1&ID2=2
0
ответ дан 28 November 2019 в 02:45
поделиться

Isn't all you need a timer that fires every x seconds? The callback function will do an AJAX postback to the server of the form with a "autosave=true" field added. Just handle this postback on the server and you are done.

0
ответ дан 28 November 2019 в 02:45
поделиться

Если вы ищете простую и легкую программу, я думаю, что самый легкий вариант, который вы можете получить, - это использовать встроенную в JavaScript функцию setTimeout () . Используйте его в сочетании с выбранной вами структурой для AJAX, и все готово.

function autoSave()
{
  $.get(URL, DATA); // Use any AJAX code here for the actual autosaving. This is lightweight jQuery.
  setTimeout("autoSave()", 60000); // Autosaves every minute.
}
autoSave(); // Initiate the auto-saving.
0
ответ дан 28 November 2019 в 02:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: