2014-07-02 186 views
3

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

你可以看到下面的代码:

$("#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 
    }); 
}); 

我认为这个问题来自于“用户名”,因为当我使用调试,antislash \(在用户名)调用Ajax请求后消失。

我试图使用用户名:“CWS \\ jpado”,但它不起作用(两个antislashes保持那样)。我不明白,因为用另一个用户名(例如bpepin)的反垃圾不会消失..

编辑:你知道如果'\ j'是一个转义字符?

对不起,我不知道我是否很好解释。告诉我你是否需要更多信息。

谢谢!

编辑:我编辑将两张图片

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

与用户名= '\ J' 我得到 'J' Ajax请求

with username = '\\j' I get '\\j' after ajax request 与用户名=后 '\\ J' 我在ajax请求后得到'\\ j'

如何在ajax请求后获得'\ j'?

谢谢

+0

参照这篇文章http://social.msdn.microsoft.com/Forums/vstudio/en-US/979a1df7-7e04-45d6-92bb-6a9ee614941c/how-to-consume-wcf-service-in- javascript?forum = wcf –

+0

您是否在浏览器控制台中看到此错误?你能否获得警觉的“成功”?这个错误不是因为我认为的用户名!..如果您给“bpepin”作为用户名正确的话,仍然会出现错误? – byJeevan

+0

与*“另一个用户名”*,它的工作?问题只是这个用户名? –

回答

2

你混淆了转义字符。反斜线在JavaScript和C#转义字符,所以你的JavaScript代码肯定需要第二反斜线逃避真正的一个:

username: "CWS\\jpadoan" 

username属性的实际字符串将只包含一个反斜杠,所以这就是将被传递给服务。

在C#中进行调试时,根据您所看到的内容,在查看该字符串的内容时可能看到也可能看不到第二个反斜杠。在C#调试器中查看“真实”字符串的最简单方法是将其放入监视窗口中,然后单击小可视化器按钮以调出带有实际字符串值的弹出窗口。

你还要另一个反斜杠在你的成功的功能,这应该是一个正斜杠:

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

在这两种情况下,你的JavaScript将是扭曲,甚至可能不正确编译。

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

+0

“username属性中的实际字符串将只包含一个反斜杠,所以这将传递给该服务。” 否用户名属性将包含0反斜杠 –

+0

你知道'\ j'是否是转义字符? –

+0

@El_Pepino'\ j'是一个转义序列,但没有任何特殊含义。 'j'将被视为原样并且反斜杠被丢弃。 '的console.log( “\ J”); //“j”' –