3

私はこのajax呼び出しを持っています

 function addNewRemarksToDataBase(argRemark) {
            if (argRemark != '') {
                // if not blank
                $.ajax({
                    url: '../AutoComplete.asmx/AddNewRemarks',
                    type: 'POST',
                    timeout: 2000,
                    datatype: 'xml',
                    cache: false,
                    data: 'argRemarks=' + argRemark,
                    success: function (response) {
                        // update the field that is source of remarks
                        updateRemarksSource();
                    },
                    error: function (response) {
                    }
                });
            }
        };

メソッドは次のように定義されます

[WebMethod]
public void AddNewRemarks(string argRemarks)
{
    BAL.BalFactory.Instance.BAL_Comments.SaveRemarks(argRemarks, Globals.BranchID);
}

問題は、ユーザーがのようなもの、long & elegantまたはのようなsmart & beautifulものを入力した場合、 (最初の場合)、(2番目の場合)の&前の最初の部分のみを取得することです(空白にも注意してください!)&longsmart

jquery ajaxのドキュメントを読んだprocessDataところ、クエリ文字列などに使用されるものであるため、falseに設定する必要があります。追加しました

processData: false

しかし、私はまだ前の用語を取得してい&ます。に(またはそのようなもの)encodeURIComponentに変わるので、私は使いたくありません。私が必要としているのは、データベースに保存される完全な値です。これどうやってするの?&long & elegantsmart & beautiful

編集することは役に立ち{ argRemarks: argRemark }ません!関数はイベントが呼び出されません。Firebugで実行し、エラー関数にブレークポイントを設定すると、これが発生します

[Exception... "Component does not have requested interface"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "JS frame :: http://localhost:49903/js/jquery-1.8.1.min.js :: .send :: line 2"  data: no]"

更新2: 実行中

data: 'argRemarks=' + encodeURIComponent(argRemark)

トリックをしました。しかし、誰かがこれがどのように機能するかを理解するのを手伝ってくれますか?に変換されると思いましたが、変換&され&ませんでしたか?long & elegant現在メソッドに受け取っているパラメーターは、smart & beautiful私が望んでいたものencodeURIComponent()です、、、特殊文字を変換しませんか?

4

2 に答える 2

7

をエンコードする必要がありますargRemark。これを行う最も簡単な方法は、jQuery に仕事を任せることです。

data: { argRemarks: argRemark }

これは、オブジェクトを渡すこととは異なりdata: 'argRemarks=' + argRemarkます。jQuery は、そのオブジェクトのプロパティの値を URL エンコードする必要があると想定しますが、文字列を渡す場合は、事前に適切にエンコードしておく必要があります。

于 2013-02-26T10:13:28.287 に答える
3

最初に文字列を URL エンコードする必要があります。

data: 'argRemarks=' + encodeURIComponent(argRemark)
于 2013-02-26T10:16:26.517 に答える