访问被拒绝ajax请求javascript

时间:2014-07-02 14:30:28

标签: javascript jquery ajax access-denied backslash

我想在javascript中发出一个ajax请求来调用WCF服务,但是我有一个错误:拒绝访问。

您可以看到以下代码:

 $("#test").on("click", function () {
    $.ajax({
        type: "GET",
        url: 'http://localhost:1111/Design_Time_Addresses/WCFandEFServiceEnvol/PrestationService/Methode',
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        username: "CWS\jpado",
        password: "Password",
        success: function (prestaList) {
            alert("success");
            var prestaPicker = $("#Presta");
            $(prestaList.d).each(function () {
                prestaPicker.html(prestaPicker.html() +
                    "<p>" + this.id_prestation + "<\p>"
                );
            });
        },
        error: onError
    });
});

我认为问题来自&#34;用户名&#34;因为当我使用debug时,antislash \(在用户名中)在调用ajax请求后消失。

我尝试使用用户名:&#34; CWS \\ jpado&#34;,但它不起作用(两个反时间都保持这样)。我不明白,因为使用另一个用户名(例如bpepin),反斜杠并没有消失..

编辑:你知道吗&#39; \ j&#39;是一个转义字符?

对不起,我不知道我是否解释清楚。如果你想要更多的信息,请告诉我。

谢谢!

编辑:我编辑添加两张图片

with username = '\j' I get 'j' after ajax request

用户名=&#39; \ j&#39;我得到了&#39; j&#39;在ajax请求之后

with username = '\\j' I get '\\j' after ajax request 用户名=&#39; \\ j&#39;我得到了&#39; \\ j&#39;在ajax请求之后

我怎样才能得到&#39; \ j&#39;在ajax请求之后?

由于

1 个答案:

答案 0 :(得分:2)

你混淆了转义字符。反斜杠是javascript和C#中的转义字符,所以你的javascript代码肯定需要第二个反斜杠来逃避真正的反斜杠:

username: "CWS\\jpadoan"

username属性中的实际字符串只包含一个反斜杠,因此将传递给服务。

在C#中调试时,根据您查看的内容,在查看该字符串的内容时,您可能会看到或不会看到第二个反斜杠。查看&#34;真实&#34;的最简单方法C#调试器中的字符串是将它放在监视窗口中,然后单击小可视化按钮以显示带有实际字符串值的弹出窗口。

你的成功函数还有另一个反斜杠,这应该是正斜杠:

"<p>" + this.id_prestation + "</p>"

在这两种情况下,你的javascript都会变得棘手,甚至可能无法正常编译。

不知道这是否是唯一的问题,但你肯定需要在其他任何工作之前获得反斜杠。