我想在 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
});
});
我认为问题出在“用户名”上,因为当我使用调试时,反斜杠\(在用户名中)在调用 ajax 请求后消失了。
我尝试使用用户名:“CWS\\jpado”,但它不起作用(两个反斜杠都保持这样)。我不明白,因为使用另一个用户名(例如 bpepin)反斜杠不会消失..
编辑:你知道 '\j' 是否是转义字符吗??
对不起,我不知道我是否解释得很好。如果您需要更多信息,请告诉我。
谢谢!
编辑:我编辑添加两张图片
使用 username = '\j' 我在 ajax 请求后得到 'j'
使用 username = '\\j' 我在 ajax 请求后得到 '\\j'
如何在 ajax 请求后获取 '\j'?
谢谢
最佳答案
您混淆了转义字符。反斜杠在 javascript 和 C# 中都是转义字符,因此您的 javascript 代码肯定需要第二个反斜杠来转义真正的反斜杠:
username: "CWS\\jpadoan"
username
属性中的实际字符串将只包含一个反斜杠,因此这就是将传递给服务的内容。
在 C# 中调试时,根据您正在查看的内容,您在查看该字符串的内容时可能会看到也可能不会看到第二个反斜杠。在 C# 调试器中查看“真实”字符串的最简单方法是将其放在监 window 口中,然后单击可视化工具小按钮弹出一个包含真实字符串值的弹出窗口。
您的成功函数中还有另一个反斜杠,它应该是一个正斜杠:
"<p>" + this.id_prestation + "</p>"
在这两种情况下,您的 javascript 都会出错,甚至可能无法正确编译。
不知道这是否是唯一的问题,但您肯定需要先正确使用反斜杠,然后其他任何东西才能起作用。
关于javascript - 访问被拒绝的 ajax 请求 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24533838/