0

ファイルに次のコードがありcommon.jsます。

ロジックは、HighlightTextBoxデータが一致しないRemoveHighlightTextBox場合とデータが一致する場合です。

url  = /Services/GetAutoCompleteData?v=

name = My & Son

actualUrl = /Service/GetData?v=My & Son&eq=true

//debuge following js code and found above values
//here problem is because of `&` sign url gets disturb as `actualUrl is /Service/GetData?v=My & Son&eq=true`
//so after `&` sign url gets ignore by js (i.e Son&eq=true code)
//i have passes values `My & Son` but actually js parsing it as `My` so how do I parse my original URL with `&` sign ?

var div = $(this).closest("div");
var elem = div.find(":text");
elem.change();
var name = elem.val();
var actualUrl = url + name + "&eq=true"
var filter = $(this).attr("filter");
if (name == "") {
    div.find(":hidden").val('');
    return;
}
AjaxPostCall(actualUrl, filter, function (data) {
    if (data == null || data.length != 1) {
        HighlightTextBox(elem);
        div.find(":hidden").val('');
        return;
    }
    RemoveHighlightTextBox(elem)
    div.find(":hidden").val(data[0].Key);
    elem.val(data[0].Value);
});

function AjaxPostCall(actualUrl, extraParam, onSuccess) {
    $.ajax({
        type: "POST",
        contentType: "application/json; charset=utf-8",
        url: actualUrl, 
        data: extraParam,
        dataType: "json",
        success: function (data) { if (onSuccess != null) onSuccess(data); },
        error: function (result) { }
    });
}
4

2 に答える 2

1

これを試して

  var actualUrl = encodeURIComponent(url + name + "&eq=true");

encodeURIComponentこの関数は、コンポーネントをエンコードしURIます。

この関数は、特殊文字をエンコードします。さらに、次の文字をエンコードします: , / ? : @ & = + $ #

于 2013-08-23T05:15:10.647 に答える
0

パラメータ文字列に追加する前に&、メソッドencodeURIComponent()を使用してパラメータ値をエスケープする必要があります。

encodeURIComponent('name = My & Son')
于 2013-08-23T05:13:35.213 に答える