我想在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;是一个转义字符?
对不起,我不知道我是否解释清楚。如果你想要更多的信息,请告诉我。
谢谢!
编辑:我编辑添加两张图片
用户名=&#39; \ j&#39;我得到了&#39; j&#39;在ajax请求之后
用户名=&#39; \\ j&#39;我得到了&#39; \\ j&#39;在ajax请求之后
我怎样才能得到&#39; \ j&#39;在ajax请求之后?
由于
答案 0 :(得分:2)
你混淆了转义字符。反斜杠是javascript和C#中的转义字符,所以你的javascript代码肯定需要第二个反斜杠来逃避真正的反斜杠:
username: "CWS\\jpadoan"
username
属性中的实际字符串只包含一个反斜杠,因此将传递给服务。
在C#中调试时,根据您查看的内容,在查看该字符串的内容时,您可能会看到或不会看到第二个反斜杠。查看&#34;真实&#34;的最简单方法C#调试器中的字符串是将它放在监视窗口中,然后单击小可视化按钮以显示带有实际字符串值的弹出窗口。
你的成功函数还有另一个反斜杠,这应该是正斜杠:
"<p>" + this.id_prestation + "</p>"
在这两种情况下,你的javascript都会变得棘手,甚至可能无法正常编译。
不知道这是否是唯一的问题,但你肯定需要在其他任何工作之前获得反斜杠。