JQuery получить зашифрованный источник изображения / - PullRequest
0 голосов
/ 03 июля 2010

Я вроде как разобрался с моими проблемами с формами с использованием serializeArray, но, как вы знаете, в нем отсутствует поддержка ввода / файла, поэтому решите объединить его с моими сериализованными данными. Теперь я создаю объект, и все, что я получаю имя файла с помощью .val (). Но я не могу источник изображения. Например, я хочу сделать это:

        alert(jQuery('.inputBox#pic').attr(src));
        var obj = {'name'   : 'pic',
                   'value'  : jQuery('input#pic').src};

Единственная проблема в том, что это не работает. Я не могу подготовить источник изображения для загрузки. и без этого я не могу сделать успешный запрос POST.

Ответы [ 3 ]

0 голосов
/ 03 июля 2010

Какой смысл этого вызова alert()? А что вы пытаетесь сделать с атрибутом src? jQuery (селектор) .src ничего не делает, потому что вы не можете получить доступ к элементу img или его атрибутам таким образом.

Если вы хотите значение src, используйте:

var imgSrc = $('#pic').attr('src');
// or
var obj = {
    'name' : 'pic',
    'value' : $('#pic').attr('src');
};

Я не уверен, как вы планируете выполнять загрузку файла таким образом, но вы так и сделаете. Тем не менее, я бы посоветовал просмотреть документацию jQuery , чтобы убедиться, что вы понимаете основы манипулирования JQuery DOM. Вы всегда используете .attr(), чтобы получить или установить атрибуты элемента для результата jQuery. Если вы хотите получить доступ к реальному элементу объекта или его свойствам, вам необходимо использовать:

var elPic = $('#pic')[0];
// or
var imgSrc = $('#pic')[0].src;

Кроме того, обычно нет смысла смешивать селекторы идентификаторов с селекторами классов, поскольку идентификаторы должны быть уникальными.

Наконец, я предполагаю, что ".attr(src)" была опечаткой в ​​вашем коде, но если это не так, вам нужно освежить свой JavaScript, чтобы вы знали разницу между переменной и строковым литералом. Строковые литералы должны быть заключены в одинарные или двойные кавычки, иначе JavaScript считает, что вы передаете функции переменную с именем src, а не строку "src".

0 голосов
/ 03 июля 2010

Вы не можете опубликовать файл таким способом.

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

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

0 голосов
/ 03 июля 2010

Вы можете взглянуть на jQuery.form , который можно использовать для адаптации ваших форм. Также поддерживает поля ввода файлов .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...