Ответы пользователя по тегу JavaScript
  • Как реализовать события click и keypress для окна быстрого поиска по сайту?

    @Nokia7650
    web developer
    Не совсем понятно, где сам вызов ajax'а.

    Вам нужно сделать 1 функцию для ловли нажатий на инпуте и 2 для запуска ajax поиска. И из 1 функции вызывать 2.
    Давно не занимался js, примерно как-то так:

    $(document).ready(function(){
       var ajaxPost = null;
       //ловим нажатия
       $("#story").keydown(function(e){ //лучше keydown, keypress, насколько помню, не все клавиши ловит
          if (e.keycode === 13) {
             StartSearch($("#story").val());
          }
       })
    });
    //делаем поиск
    function StartSearch(query){
       if (query == "" || ajaxPost != null) return; //в инпуте пусто или пред запрос еще не выполнен - выход
       ajaxPost = $.post("/ajax/mod.php", { "query": query}, function (text) {
          //получаем ответ от сервера (text)
          //и делаем с ним что хотим.
         ajaxPost = null;
       }
    }


    На сервере получаем переменную query, делаем поиск, возвращаем ответ-результат.
    Ответ написан
    Комментировать
  • Как правильно загрузить файл через AJAX в ASP.NET MVC?

    @Nokia7650
    web developer
    Ошибки есть. Вьюшку и контроллер немного надо изменить
    вью:
    <body>
        <div>
            <form id="fileUpload" action="@Url.Action("AddImage")" method="POST" enctype="multipart/form-data">
                <input id="fileInput" type="file" />
                <input type="button" value="Upload file" id="btnFileUpload" />
            </form>
        </div>
        
        <script type="text/javascript">
    
                $("#btnFileUpload").click(function() {
                    var formData = new FormData();
                    var file = document.getElementById("fileInput").files[0];
                    formData.append("fileInput", file);
    
                    $.ajax({
                        url: "Home/AddImage",
                        type: "POST",
                        data: formData,
                        contentType: false,
                        processData: false,
                        success: function() {
                            alert("URA");
                        }
                    });
                });
            
        </script>
    </body>


    контроллер:

    public ActionResult Index()
            {
                return View();
            }
            [HttpPost]
            public ActionResult AddImage(HttpPostedFileBase fileInput)
            {
                string fileName = fileInput.FileName;
                var image = new Bitmap(fileInput.InputStream, false);
                image.Save(Path.Combine(HttpContext.Server.MapPath("/Images/"), fileName));
                return View("Index");
            }
    Ответ написан
    Комментировать
  • Как получить файл на ASP.NET MVC отправленный через XmlHttpRequest?

    @Nokia7650
    web developer
    Автор, если вы решили через FormData, то почему не выложили решение? Сэкономили бы кучу времени мне и другим джуниорам.

    По вашему решению:

    во вьюшке, js:
    var fileE = document.getElementById("inputID");
            fileE.onchange = function () {
                var xhr = new XMLHttpRequest();
                xhr.open("POST", "/Home/Index");
                xhr.send(this.files[0]);
            }


    В контроллере:

    [HttpPost]
            public JsonResult Index(HttpPostedFileBase fileAvatar)
            {
                var ggg = Request.BinaryRead(Request.ContentLength);
                // Запись на диск
                System.IO.File.WriteAllBytes(@"C:\1.jpg", ggg);
               // или в Bitmap
                var originalImage = ConvertToBitmap(ggg);
                var d = originalImage;
    
                return null;
            }
    
    private static Bitmap ConvertToBitmap(byte[] imagesSource)
            {
                var imageConverter = new ImageConverter();
                var image = (Image)imageConverter.ConvertFrom(imagesSource);
                return new Bitmap(image);
            }


    Через FormData:

    js:
    var fileE = document.getElementById("inputID");
            fileE.onchange = function () {
                var xhr = XMLHttpRequest();
                var data = new FormData;
                data.append("image", this.files[0]);
                xhr.open("POST", "/Home/Index");
                xhr.send(data);
            }


    Контроллер:
    [HttpPost]
            public ActionResult Index(HttpPostedFileBase image)
            {
                var originalImage = new Bitmap(image.InputStream, false);
    
                return null;
            }
    Ответ написан
    Комментировать