我正在使用ajax调用aspx服务器端脚本来发送电子邮件消息。这是我的ajax发送功能:
//global variables-------------------------------------------------------
var html_dir = "/Html/"
var net_dir = "/Net/"
//ajax request-----------------------------------------------------------
function ajaxRequest(url, cfunc, asynch)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
if (window.XMLHttpRequest)
{
response = new XMLHttpRequest();
}
// code for IE6, IE5
else
{
response = new ActiveXObject("Microsoft.XMLHTTP");
}
//send request
response.onreadystatechange = cfunc;
response.open("GET", url, asynch);
response.send();
}
//-----------------------------------------------------------------------
以及我如何运行此功能:
ajaxRequest(net_dir + "SendForm.aspx?emailBody=" + emailBody, formSent, true);
它工作正常,但我有波兰字符(łńóąę等)的问题。在电子邮件和SendForm.aspx脚本(当调试时)有一些奇怪的字符而不是抛光字母。我该如何解决?
答案 0 :(得分:1)
您很可能需要percent-encode emailBody
参数:
ajaxRequest(net_dir + "SendForm.aspx?emailBody=" + encodeURIComponent(emailBody), formSent, true);
然后
encodeURIComponent("łńóąę") === "%C5%82%C5%84%C3%B3%C4%85%C4%99"
在网址中使用哪个是安全的。
在服务器端,如果没有自动完成,则需要对其进行解码:
string emailBody = HttpUtility.UrlDecode( Request.QueryString["emailBody"],
Encoding.UTF8 );
//Javascript's encodeURIComponent is always UTF8
答案 1 :(得分:0)
在一段时间之前我也遇到过同样的问题。您可以将特殊字符替换为“ - ”或“,”。当您获得响应时,使用您的特殊字符更新您的字符串并发送邮件。
它可能对你有帮助。