enc这个方Ajax一般会在 xxxxx.ashx里生成 一句服务器[AjaxMethod()]的方法,例如
AddToCustomFavorite:function(type,menuID,callback,context){return new ajax_request(this.url + '?_method=AddToCustomFavorite&_session=r','type=' + enc(type)+ '\r\nmenuID=' + enc(menuID),callback, context);},
里面调用了enc这个方法,这个方法在ajax/common.ashx
function enc(s)
{
return s.toString().replace(/\%/g, "%26").replace(/=/g, "%3D");
}
而crystalreportviews/allinone.js也有一个enc
function enc()
// Encode several values
// Variable number of parameters
{
var args=enc.arguments,len=args.length,s='['
if (len>0) s+=args[0]
for (var i=1;i<len;i++) s+=','+args[i]
return s+']'
}
------------------------------------
造成冲突,Ajax调用到crystal的enc里,每一个传入的值都会加上 []
---------------
靠服务端去出吧,服务端csharp代码大概如此,去[],每个ajax的参数都要去除[]
public static string AdjustStringParameter(string source)
{
string resultValue;
if (source.StartsWith("[") && source.EndsWith("]"))
{
int len = source.Length;
resultValue = source.Substring(1,len -2 );
}
else
{
resultValue = source;
}
return resultValue;
}