2015-06-02 2 views
0

На моем сайте я хотел бы предложить пользователям возможность указать URL-адрес изображения, а затем загрузить этот образ в подготовленный <img src=""> через AJAX.Загрузить изображение src в <img> с помощью jQuery.ajax

Это форма, включая текстовое поле и кнопка отправки:

<form id="myform"> 
    <input name="image_url" type="text" placeholder="type your image URL" /> 
    <input type="submit" name="submit" id="submit" /> 
</form> 

и это будет <img> теги:

<img src="" id="image_from_url"> 

У меня уже есть это заявление JQuery, чтобы предотвратить по умолчанию кнопку отправки подача:

$(function() { 

    $('#myform').on('submit', function (e) { 

     e.preventDefault(); 

    // ajax call here? 

    }); 

    }); 

Может кто-нибудь дать подсказку о том, как я могу включить вызов ajax здесь, чтобы загрузить изображение (с URL-адреса изображения, которое пользователь предоставляет в текстовом поле формы), в <img src="">?

спасибо!

+0

Вам здесь не нужен ajax. Просто '.prop()' будет достаточно. –

+0

@ShaunakD: Спасибо! не могли бы вы объяснить, как использовать этот метод? –

ответ

2

Вам не нужно Ajax для этого. Просто возьмите URL и создать новый образ элемента:

var i = null; 
$('#capture_form').on('submit', function (event) { 
    if (i) { 
     // update image if it already exists 
     i.prop('src', this.image_url.value); 
    } else { 
     // create <img>-element on the fly, as you might not need it beforehand 
     i = $('<img/>', { src: this.image_url.value }); 
     // append it as a child to another element 
     $('body').append(i); 
    } 

    event.preventDefault(); 
}); 

Demo

Try before buy

+0

спасибо за ваш ответ - однако '' должен быть там еще до того, как пользователь предоставит URL-адрес - вы можете отредактировать? Я полагаю, что вместо двух средних строк я бы просто написал: '$ (" # image_from_url "). Attr (" src ", this.image_url.value);'? –

+0

Я обновил свой ответ с помощью решения для создания элемента «на лету» или обновил его, если он уже существует.Если у вас есть '' -элемент заранее, просто используйте то, что вы предложили вместо: '$ (" # image_from_url "). Attr (" src ", this.image_url.value);'. – insertusernamehere

0

Try с этим:

var url = "Insert here the url"; 
$.get(url, function(data) { 
    $("#image_from_url").attr('src', data); 
}); 
+0

спасибо за ваш ответ - только один вопрос: как мне «отправить» URL-адрес в переменную в первую очередь? –

+0

Рекомендуется использовать относительные пути, чтобы избежать проблем с CORS, но это зависит от вашего адреса назначения, – oscarvady

+0

'.src' метод недоступен для объекта jquery, и он не будет работать. – Jai

0

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

$(function() { 
    $('#capture_form').on('submit', function (e) { 
    $('#capture_section').removeClass("hidden"); 
    e.preventDefault(); 
    $('#image_from_url').attr({src: "<Image URL here>"}); 
    }); 
}); 
4

Просто сделать это:

http://jsfiddle.net/vmvuny9e/

$(function() { 
    $('#myform').on('submit', function (e) { 
     e.preventDefault(); 
     $("#image_from_url").attr("src", $("#image_url").val()); 
    }); 
}); 

Нет необходимости в какой-либоJAX, поскольку вы можете просто поместить URL-адрес изображения в атрибут <img> -tag src, и он будет работать безупречно.

Я добавил идентификатор на ваш вход, так как мне нужно было извлечь из него значение.

+0

Вы можете сохранить один запрос DOM, и вам не нужен дополнительный идентификатор. Просто используйте 'this.image_url.value'. Поскольку у вас уже есть элемент 'form', вы можете получить доступ к своим полям по именам с помощью vanilla JS. – insertusernamehere

Смежные вопросы