这是一个小型内部工具,使少数人可以查询数据库。查询的加号如下:

SELECT SUBSTRING(DateName(month,CreatedOn),0,4) + ' - ' + SUBSTRING(CAST(Year(CreatedOn) AS varchar(10)),3,3) as Month, Year(CreatedOn) as Year,


使用jquery ajax调用将查询传递到服务器

 var d = "query=" + $("#txtQuery").val();
            $.ajax({
                type: 'GET',
                url: '/Reports/GetReport',
                data: d,


但是,我收到服务器错误并进行调试,发现服务器上的查询缺少加号。即

 SELECT SUBSTRING(DateName(month,CreatedOn),0,4)  ' - '  SUBSTRING(CAST(Year(CreatedOn) AS varchar(10)),3,3) as Month


从FireBug,

localhost:1489/Reports/GetReport?query=SELECT%20SUBSTRING(DateName(month,CreatedOn),0,4)%20+%20%27%20-%20%27%20+%20SUBSTRING(CAST(Year(CreatedOn)%20AS%20varchar(10)),3,3)%20as%20Month,%20Year(CreatedOn)%20as%20Year..


如何确保加号被视为输入字符串的一部分,而不是作为concat运算符,在这里似乎是这种情况。

最佳答案

“ +”在URI中被视为空格。

使用encodeURIComponent

10-06 06:52