1

我使用 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文本发布?

4

3 回答 3

5

您可以(并且应该)使用encodeURIComponent.

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

编辑:jQuery 可以在数据字段中接受一个对象。你应该只使用

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

这样 jQuery 就可以自动对查询字符串进行编码。

于 2010-07-29T14:54:06.690 回答
1

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);
    }
});
于 2010-07-29T14:55:35.180 回答
0

在通过 AJAX 发布之前,我会亲自转义所有进入的 html,并让 php 文件取消转义结果或在处理之前检查 PHP 中的输入。我没有被这个问题抓住,但我可以看到它可能是一个问题。

于 2010-07-29T14:55:29.480 回答