发送带有ajax的html文本,'&'上的问题?

时间:2010-07-29 14:48:34

标签: html entities

我使用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 个答案:

答案 0 :(得分:5)

您可以(并且应该)转义查询字符串组件with encodeURIComponent

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

编辑:jQuery可以接受数据字段中的Object。你应该使用

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

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

答案 1 :(得分: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);
    }
});

答案 2 :(得分:0)

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