2011-07-22 1 views
0

私はvartitleを取り込んでそのvartitleをHTMLエンコードされた変数に生成し、これをajaxのURLに渡します。あなたが最後に見ることができるようにAJAX、Htmlエンコーディング、およびハッシュ記号が正しく機能しない(C#とJQuery)

method=savecat&templatename=percentdistribution&dropzone=Column_1&datasetid=31&subjectid=28&varnumber=1155&origin=&[email protected]@&values=Satisfied%20with%20job%[email protected]%20satisfied%20with%20job%[email protected]&vartitle=%26%23&missingvalues=-3,-7,-9 

、vartitle =%26%23:ここで

は私のAJAX呼び出しに渡されたパラメータの私の文字列の例です。

上記の例では、テキストボックスに&#と入力しました。 &#のシーケンスは、私のajax呼び出しを壊す何かをします。私が他のものを入力すると、Ajaxは完全に機能します。

私には何が欠けていますか?

私のAJAX呼び出しは以下の通りです:

function SendAjax(webPageName, queryParams, triggerFunction) 
{  


     alert(queryParams); //is the string mentioned above 
     alert(webPageName); //is the valid page name: BGPPS.aspx 


    var date = new Date(); 
    var unique = date.getDay() + date.getHours() + date.getMinutes() + date.getSeconds() + date.getMilliseconds(); 

    $.ajax(
    { 
     type: "POST", 
     url: webPageName, 
     data: queryParams+'&'+unique, 
     success: triggerFunction 
    }); 
} 
+0

すべての準備が整いましたと言う瞬間から、私は自分の答えを削除します。何かがエンコードと関係があります... – Aristos

+0

その奇妙なことは、&# – cdub

+0

の特定のシーケンスと関係しています。「ブレーク」とまったく同じ意味ですか?あなたの成功は機能しますか?サーバー上でエラーが発生していますか? – gilly3

答えて

1

あなたは彼らがこれらの文字を含めることができ、ユーザの入力から取られている場合、パラメータの値をURLEncodeをする必要があり、これらは、URL内の特殊文字であり、制御意味を持ちます。

はそれを行う方法については、このスタックオーバーフローの質問を参照してください: Encode URL in JavaScript?

1

編集:デフォルトでは、ASP.Netは、彼らのように見えるの記事はXSS攻撃の可能性が許可されていません。 Apparantly ASP.NetはXSS攻撃で&#を使用できると思います。あなたの@PageディレクティブにValidateRequest="false"を追加することによって、特定のページのために、この動作を無効にすることができますあなたのためにそれを解決する必要があり

<%@ Page Language="C#" ... ValidateRequest="false" %> 

を。


私のオリジナルの答え:

は引数をコードする心配しないでください。私はjQueryのは、あなたのためにそれを行います

$.ajax({ 
    type: "POST", 
    url: webPageName, 
    data: { 
     method: "savecat", 
     templatename: "percentdistribution", 
     dropzone: "Column_1", 
     datasetid: "31", 
     subjectid: "28", 
     varnumber: "1155", 
     origin: "", 
     codes: "[email protected]@", 
     values: "Satisfied with job [email protected] satisfied with job [email protected]", 
     vartitle: "&#", 
     missingvalues: "-3,-7,-9" 
    }, 
    success: triggerFunction 
}); 
+0

このAjaxメソッドに到達するまでには、すでにエンコードされています。面白いのは&#jqueryが正しいURLを見つけられないことだけです。私が&a#aのような、そのようなスケスのほかに何かを使うなら、うまくいきます。 – cdub

+0

@chris - 私はあなたのための解決策を持っています。 '@ Page'ディレクティブに' ValidateRequest = "false" 'を追加する必要があります。私は私の答えを更新します。 – gilly3

0

思う:jQueryのはそれをあなたが提出したいキーと値のペアのマップを渡すことによって、あなたのPOST引数をエンコードしてみましょう。ただオブジェクトを与えてください。

$.ajax({ 
    type: "POST", 
    url: webPageName, 
    data: {var1: 'foo', var2: 'bar'}, 
    success: triggerFunction 
}); 
関連する問題