отправить HTML-текст с помощью AJAX, проблема с '&'? - PullRequest
1 голос
/ 29 июля 2010

Я использую jquery.ajax для сохранения области расширенного текста.

corr=some.innerHTML(); /* corr='< some text <' */
$.ajax({
    type:"POST", url:"flatplan/save_corr.php",
    data:"corr="+corr+"&IDFS="+IDFILES,
    success: function(msg){

    },
    error:function(x,e){
        ajax_errors(x,e);
    }
});

Проблема в том, что переменная corr может содержать символы '&' внутри и отправляет больше параметров давать проблемы. Можно ли опубликовать текст в формате ajax html?

Ответы [ 3 ]

5 голосов
/ 29 июля 2010

Вы можете (и должны) экранировать компоненты строки запроса с помощью encodeURIComponent.

data: "corr=" + encodeURIComponent(corr) + "&IDFS=" + encodeURIComponent(IDFILES),

Редактировать: jQuery может принимать объект в поле данных.Вам просто нужно использовать

data: ({
  corr: corr,
  IDFS: IDFILES
}),

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

1 голос
/ 29 июля 2010

Значение corr не может содержать &.Если это так, вам нужно urlencode это значение.Для этого используйте метод escape().

var corr = escape(some.innerHTML()); //(corr='< some text <')
$.ajax({
    type:"POST", 
    url:"flatplan/save_corr.php",
    data:"corr="+corr+"&IDFS="+IDFILES,
    success: function(msg){
        //success handler
    },
    error:function(x,e){
        ajax_errors(x,e);
    }
});
0 голосов
/ 29 июля 2010

Я бы лично избегал использования всего html, прежде чем отправлять его через AJAX, и иметь php-файл, не возвращать результирующий результат или проверить правильность ввода в PHP перед обработкой. Я не был пойман с этим, но я могу видеть, где это могло быть проблемой.

...