用jquery将&符号传递给ajax?

Raz*_*t4x 3 ajax jquery

我有这个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) {
                    }
                });
            }
        };
Run Code Online (Sandbox Code Playgroud)

该方法定义为

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

问题是如果用户输入long & elegant类似的内容smart & beautiful,包含的东西&,我只得到之前的第一部分&,long(在第一种情况下),smart(在第二部分中)(也注意到空白!)

我在jquery ajax文档中读到了一个应该设置processData为false的文档,因为它是用于查询字符串的东西.我加了

processData: false
Run Code Online (Sandbox Code Playgroud)

但我仍然在这之前得到这个词&.我不想使用encodeURIComponent,因为它会转动&(或类似的东西).我需要的是全部价值long & elegant,smart & 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]"
Run Code Online (Sandbox Code Playgroud)

更新2:

data: 'argRemarks=' + encodeURIComponent(argRemark)
Run Code Online (Sandbox Code Playgroud)

做了伎俩.但任何人都可以帮助我理解这是如何工作的?我以为它会转换&&但它没有?我收到到现在的方法的参数正是我想要的,long & elegant,smart & beautiful,不encodeURIComponent()转换的特殊字符?

Jon*_*Jon 7

需要编码argRemark.最简单的方法是让jQuery为你完成这项工作:

data: { argRemarks: argRemark }
Run Code Online (Sandbox Code Playgroud)

这与data: 'argRemarks=' + argRemark通过传入一个对象不同,jQuery假定它需要对该对象上的属性值进行URL编码 - 而如果传入一个字符串,则需要事先对其进行正确编码.