JQuery AJAX PHP сообщение о проблеме - PullRequest
0 голосов
/ 27 марта 2011

Это может звучать странно, но у меня есть проблема с публикацией JQ / AJAX / PHP.

Мой «код» все есть и работает в большинстве ситуаций, кроме 1 - когда я пытаюсь передать тег через процесс.

Я беру html вот так

var ed = $('#fraRTE').contents().find('body #editarea').html(); 

#fraRTE - это ширина iframe, редактируемый div #editarea, следовательно .contents().find('body #editarea').html()

Так что если var edэто просто «Привет, мир и т. д.». Нет проблем, и данные обрабатываются, НО, если var ed что-то вроде «Привет, мир и т. д. ... <img src="image.png">», данные не обрабатываются - как правило, если var ed это "Привет, мир и т.д .... <img src="image.png">" - между текстом и изображением нет пропуска, данные фактически обрабатываются.

Если я alert(ed) перед публикацией, тогда я вижу "правильную" строку- независимо от содержимого, отправьте сообщение следующим образом:

var data = 'content='+ed;
$.ajax({ 
type: 'post', 
url:  'script.php',
data: data,
success: function(msg) { 
alert(msg);
}

});

Я создаю строку данных перед «data: data», поскольку в ней есть еще несколько элементов.

my alert(msg) устанавливается echo $_POST['content']; на script.php

, предупреждение (msg) сообщает мне, что было (или не было) отправлено в БД.Здесь я вижу проблему, упомянутую выше.т.е. включение (или нет) <img...>

Предложения, пожалуйста

Ответы [ 2 ]

0 голосов
/ 27 марта 2011

jQuery достаточно умен, чтобы справиться с превращением данных вашего запроса в строку запроса.

$.ajax({
  type: 'post', 
  url:  'script.php',
  data: { content: ed },
  success: function(msg) { 
    alert(msg);
  }
});

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

В порядкечтобы сделать это самостоятельно, вам придется использовать encodeURIComponent()

"content=" + encodeURIComponent(ed);

Но гораздо проще просто позволить jQuery сделать это за вас.

0 голосов
/ 27 марта 2011

Не используйте конкатенации строк при построении параметров запроса, иначе они не будут должным образом закодированы в URL, и если параметр содержит некоторые специальные символы, он не будет принят должным образом.Вот правильный путь:

var data = { content: ed };
$.ajax({ 
    type: 'post', 
    url:  'script.php',
    data: data,
    success: function(msg) { 
        alert(msg);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...