2

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 スクリプト (デバッグ時) に、洗練された文字の代わりに奇妙な文字がいくつかあります。どうすれば修正できますか?

4

2 に答える 2

1

ほとんどの場合、パラメータをパーセント エンコードする必要がありますemailBody

ajaxRequest(net_dir + "SendForm.aspx?emailBody=" + encodeURIComponent(emailBody), formSent, true);

それは

encodeURIComponent("łńóąę") === "%C5%82%C5%84%C3%B3%C4%85%C4%99"

URLで安全に使用できます。

サーバー側では、自動的に行われない場合は、デコードする必要があります。

string emailBody = HttpUtility.UrlDecode( Request.QueryString["emailBody"], 
                             Encoding.UTF8 );
                          //Javascript's encodeURIComponent is always UTF8
于 2012-12-07T11:33:11.937 に答える
0

私もしばらく前に同じ問題に直面しました。特殊文字をいくつかの区切り文字「-」または「,」に置き換えることができます。応答を受け取ったら、文字列を特殊文字で更新し、メールを送信します。

それはあなたを助けるかもしれません。

于 2012-12-07T11:03:28.707 に答える