JQuery .post () HTML-код - PullRequest
       18

JQuery .post () HTML-код

1 голос
/ 28 февраля 2012

У меня очень странная проблема.

У меня есть форма с полем ввода, чтобы пользователь мог скопировать и вставить код для вставки Vimeo.Затем форма отправляется через ajax.

Проблема в том, что когда я пишу что-то другое, чем код для встраивания в форму ввода, он работает нормально.Когда я вставляю код ввода, он возвращает ошибку «Страница не найдена».Я сузил это до двух символов.Когда я набираю «> <», я получаю сообщение об ошибке.Если я наберу «<>», сценарий пройдет.

Форма HTML в порядке, поэтому я просто опубликую свой код JavaScript.(Я использую jQuery)

          //submit the video form
          function submitVideoForm() {
            var $inputs = $j('#form-add-video :input');
            var values = {};
            //loop through all the inputs and add them in an object
            $j($inputs).each(function() {
                values[this.name] = $j(this).val();
            });

            $j.post("http://www.mysite.com/admin/plugin/media/add_video/", values,
               function(data){
                    if (data != 'false') {
                        console.log('Worked');
                    }
                    else { 
                        console.log('Failed');
                    };
             }, 'json');

          }

Когда я смотрю на то, что опубликовано с помощью firebug, я вижу, что данные экранированы

media%5Barticleid%5D=355&media%5Bembed_code%5D=%3Ciframe+src%3D%22http%3A%2F%2Fplayer.vimeo.com%2Fvideo%2F21350265%3Ftitle%3D0%26amp%3Bbyline%3D0%26amp%3Bportrait%3D0%22+width%3D%22398%22+height%3D%22224%22+frameborder%3D%220%22%3E%3C%2Fiframe%3E

Я пытался использовать escape (), то же самоепроблема.

Буду признателен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 28 февраля 2012

Попробуйте сериализовать ваши данные, так как вы используете jQuery.

Замените $inputs и values на var values = $j('#form-add-video').serialize(); и удалите функцию, проходящую через входы. .serialize схватит их всех за вас.

ИЛИ, вы можете попробовать encodeURIComponent

Пример: values[this.name] = encodeURIComponent($j(this).val());

См. этот поток для дальнейшего обсуждения escape vs encodeURI () vs encodeURIComponent.

0 голосов
/ 28 февраля 2012

HTML-теги могут связываться с вашим кодом.Замените его на эквивалентный объект HTML. Отрывок

...