【问题标题】:jquery calling my helloworld web servicejquery 调用我的 helloworld 网络服务
【发布时间】:2011-06-15 14:20:13
【问题描述】:

我对这个 jquery 东西真的很陌生。我正在运行一个 wcf 网络服务:

[ServiceContract]
public interface IHelloWorldService
{
    [OperationContract]
    [WebInvoke(Method="GET", 
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle=WebMessageBodyStyle.Wrapped)]
    string SayHello();
}

public class HelloWorlService : IHelloWorldService
{
    public string SayHello()
    {
        return "Hello ";
    }
}

当我在谷歌浏览器中输入http://localhost:62604/HelloWorld.svc/SayHello 时,我得到以下结果: {"SayHelloResult":"你好"}

所以它似乎正在工作。

现在我创建一个如下所示的 default.html:

<html>                                                                  
 <head>                                                                  
 <script type="text/javascript" src="jquery.js"></script>          
 <script type="text/javascript">


     function CallService() {
         $.ajax({
             url: "http://localhost:62604/HelloWorld.svc/SayHello",
             type: "GET",
             dataType: "json",
             processdata = false,
             contentType: "application/json; charset=utf-8",
             sucess:function(data) { alert('success'); },
             error: function (e) { alert('failed'); }
         });
     }

     $(document).ready(function () {
         $("a").click(function () {
             CallService();
         });
     });

 </script>                                                               
 </head>                                                                 
 <body>                                                                  
   <a href="">Link</a>                                       
 </body>                                                                 
 </html>

非常简单的东西......但它不起作用......我总是收到警报失败消息...... 我有点迷路了,不知道出了什么问题。

感谢任何帮助。

编辑:default.html 页面不托管在网络服务器上,它只是我在浏览器上打开的一个简单文件。这可能是它无法正常工作的原因吗?

【问题讨论】:

  • 如果您发布错误消息会很有用
  • 打开http://localhost:62604/default.html 有效吗?如果是这样,这是一种安全措施,您需要切换到 JSONP 才能使其正常工作...

标签: jquery .net wcf web-services


【解决方案1】:

据我所知,您的 jQuery 的问题很容易解决。您的“URL”参数是一个绝对 URL。浏览器安全设置会限制此类 URL 的使用。尝试使用相对 URL 来获取数据。

如果您必须使用绝对 URL,则让您的服务器从外部 URL 获取数据,然后以只需要相对 URL 的方式将其提供给 jQuery。 p>

希望对您有所帮助。

【讨论】:

  • ohh .. default.html 并没有真正托管在任何 Web 服务器上 .. 我只是创建了一个文件并放置了一些 html 代码并在浏览器中打开它......所以是因为我'我没有托管它...?
  • 好吧,取决于您使用的网络服务器以及它的配置方式,只要您只调用文件路径,不带文件名,就会查找index.html。尝试将文件重命名为 index.html 或直接在 URL 请求中调用它。
  • 我没有网络服务器。这只是我桌面上的一个文件,我用浏览器打开....
  • 您在上面的示例代码中请求的文件显示它是从位于您计算机上的服务器调用的。 Soo...您实际上是从桌面请求文件吗?
  • 好的。我想在阅读您之前的 cmets 时我有一个误解。对于那个很抱歉。 :) 我认为三个问题之一是导致此问题的原因:1)您的地址可能不正确 2)您使用的是绝对 URL,但出于安全考虑,仍会阻止该 URL,因此尝试使用相对 URL 3)事实是不在网络服务器上也可能是原因。首先尝试使用相对 URL,如果这不起作用,请将您的 jQuery、HTML 和必要的文件上传到网络服务器,并在那里使用相对 URL。如您所知,这都是关于相对 URL 的。 ;D
【解决方案2】:

尝试记录错误:

error: function (e) { alert('failed:'+e); }

看看发生了什么!并在这里发回

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-25
    • 2011-07-29
    • 2016-02-13
    • 1970-01-01
    相关资源
    最近更新 更多