在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, "&");
myString = myString.replace(/"/g, """);
myString = myString.replace(/'/g, "'");
myString = myString.replace(/</g, "<");
myString = myString.replace(/>/g, ">");
然后,当我需要将其添加到我正在创建的XML中时,我这样做了:
myXML.find("Msg").text( encodeURIComponent(myString));
我说它可能不是最好的解决方案,因为没有在&符号的替换中放置空格,它破坏了字符串中的其他替换。
答案 0 :(得分:0)
您还可以使用正则表达式来使用escape
var myString = msgArr[0].MsgText;
myString.replace(/[!'()*&"<>]/g, escape);
例如:
"you're".replace(/[!'()*&"<>]/g, escape)
输出:"you%27re"