jQuery,撇号&其他特殊字符

时间:2013-10-14 15:16:35

标签: jquery xml internet-explorer-8 escaping html-encode

在IE8和Firefox中使用jQuery 1.9.1。 IE8的主要环境。

我正在处理的网页上有一个文本区域,用户可以输入文字和文字。单击提交按钮,格式化为XML,并通过AJAX POST写入表。它调用一个接受XML输入的存储过程。

我尝试了几种不同的方法,但是当存储过程尝试将其写入表时,无法获得以下文本以避免错误。文字是:

  

jQuery UI是一组策划的用户界面交互,效果,   小部件和构建在jQuery JavaScript库之上的主题。   无论您是构建高度交互的Web应用程序还是您   只需要在表单控件中添加日期选择器,jQuery UI即可   完美的选择。

存储过程表明它有"incorrect syntax near 're'"

我已经尝试了3种方法对textarea的内容进行编码,但所有方法都做同样的事情。扔同样的错误。

我试过了:

encodeURIComponent( texareaMsg );
encodeURI (textareaMsg);

以及

htmlEncode(textareaMsg);

(其中htmlEncode是以下函数)

function htmlEncode(value) {
    return $("<div />").text(value).html();
}

它们中的任何一个似乎都没有转义/编码撇号。 encodeURIComponent返回:

  

的jQuery%20UI%图20是%20A%20curated%20set%20of%20user%20interface%20interactions%2C%20effects%2C%20widgets%2C%20于是%20themes%20built%20on%20top%20of%第二十条%20jQuery%20JavaScript %20Library%20Whether%20you're%20building%20highly%20interactive%20web%20applications%20or%20you%20just%20need%20to%20add%20A%20date%20picker%20to%20A%20form%20control%2C%20jQuery% 20UI%图20是%第二十条%20perfect%20choice。

encodeURI返回:

  

的jQuery%20UI%图20是%20A%20curated%20set%20of%20user%20interface%20interactions,%20effects,%20widgets,%20于是%20themes%20built%20on%20top%20of%第二十条%20jQuery%20JavaScript%20Library。 %20Whether%20you're%20building%20highly%20interactive%20web%20applications%20or%20you%20just%20need%20to%20add%20A%20date%20picker%20to%20A%20form%20control,%20jQuery%20UI%图20是%第二十条%20perfect%20choice。

htmlEncode函数返回:

  

jQuery UI是一组策划的用户界面交互,效果,   小部件和构建在jQuery JavaScript库之上的主题。   无论您是构建高度交互的Web应用程序还是您   只需要在表单控件中添加日期选择器,jQuery UI即可   完美的选择。

你应该如何编码/转义像这种情况下的撇号(以及其他特殊字符)导致这个问题?再次 - 我必须为 IE8 的主要环境进行开发。到目前为止我发现的并没有奏效。

修改

@ Krishna的评论帮助我指明了我能够在某种程度上使其发挥作用的方向。我还没有用测试数据来搞砸它。不确定它是否也是最好的解决方案。

var myString = msgArr[0].MsgText;
myString = myString.replace(/ & /g, "&amp;");
myString = myString.replace(/"/g, "&quot;");
myString = myString.replace(/'/g, "&apos;");
myString = myString.replace(/</g, "&lt;");
myString = myString.replace(/>/g, "&gt;");

然后,当我需要将其添加到我正在创建的XML中时,我这样做了:

myXML.find("Msg").text( encodeURIComponent(myString)); 

我说它可能不是最好的解决方案,因为没有在&符号的替换中放置空格,它破坏了字符串中的其他替换。

1 个答案:

答案 0 :(得分:0)

您还可以使用正则表达式来使用escape

替换特殊字符的通用方法
var myString = msgArr[0].MsgText;
myString.replace(/[!'()*&"<>]/g, escape);

例如:

"you're".replace(/[!'()*&"<>]/g, escape)

输出:"you%27re"