首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能使用Javascript访问我的WCF web服务?

为什么我不能使用Javascript访问我的WCF web服务?
EN

Stack Overflow用户
提问于 2013-01-15 07:06:30
回答 2查看 1.4K关注 0票数 0

我是AJAX的新手,我正在尝试通过以下方式访问WCF web服务:

代码语言:javascript
复制
$(function () {
    $('#formNew').submit(function () {
        var datos = {
            "Nombre": $('#nombre').val(),
            "ApellidoP": $('#appP').val(),
            "ApellidoM": $('#appM').val(),
            "UserName": $('#username').val(),
            "Password": $('#password').val(),
        };
        var args = "Data=" + JSON.stringify(datos);
        var url = 'http://127.0.0.1:81/SismosService.svc/usuario/new?' + args;
        alert(url);
        $.ajax({
            type: 'GET',
            url: url,
            success: function (data) {
                alert("Exito " + JSON.stringify(data));
            },
            error: function (data) {
                alert("Error " + JSON.stringify(data));
            }
        });
    });
});

当我填写表单并单击submit按钮时,我在Firebug上得到以下错误:

N

代码语言:javascript
复制
S_ERROR_NOT_AVAILABLE: prompt aborted by user
[Break On This Error]   

throw Components.Exception("prompt aborted by user", Cr.NS_ERROR_NOT_AVAILABLE)

我的web服务定义如下:

代码语言:javascript
复制
    [WebGet(UriTemplate = "/usuario/new?Data={data}",
    RequestFormat = WebMessageFormat.Json,
    ResponseFormat = WebMessageFormat.Json,
    BodyStyle = WebMessageBodyStyle.Bare)]
    ResponseObject<Usuarios> NewUsuario(string data);

我做错了什么?是我发送参数的方式吗?是我尝试访问web服务的方式吗?谢谢你的帮助。

EN

回答 2

Stack Overflow用户

发布于 2013-01-15 07:23:41

JSON.stringify(data)用途是将javascript对象转换为json表示。

我认为在success\error函数中,您需要采用另一种方式:

代码语言:javascript
复制
 success: function (data) {
                            alert("Exito " + JSON.parse(data));
                          },
 error:   function (data) {
                            alert("Error " + JSON.parse(data));
                          }

(使用JSON.parse时,请使用JSON.stringify -确保在项目中包含json2.min.js )

票数 0
EN

Stack Overflow用户

发布于 2013-01-15 07:40:18

我通常使用以下配置来启用对我的WCF服务的ajax调用:

1)首先,我在Web.config中创建了一个JSON端点行为,并将我的服务与其关联:

代码语言:javascript
复制
<system.serviceModel>
  <behaviors>
    <endpointBehaviors>
      <behavior name="WebHttpJson">
        <webHttp defaultBodyStyle="Wrapped"
                 defaultOutgoingResponseFormat="Json" />
      </behavior>
    </endpointBehaviors>
  </behaviors>
  <services>
    <service name="MyApp.LoginService">
      <endpoint address=""
                behaviorConfiguration="WebHttpJson"
                binding="webHttpBinding"
                contract="MyApp.LoginService" />
    </service>
  </services>
</system.serviceModel>

2)然后我可以像这样简单地定义我的WCF服务:

代码语言:javascript
复制
[ServiceContract]
public class LoginService
{
    [OperationContract]
    public void SignIn(string email, string pswd)
    {
        // Check credentials and create session cookie
    }
}

3)最后进行如下所示的jQuery ajax调用:

代码语言:javascript
复制
$.ajax({
    contentType: 'application/json; charset=utf-8',
    url: serviceUrl + '/SignIn',
    type: 'POST',
    data: JSON.stringify({
        email: 'john.doe@abc.com', 
        pswd: 'qwerty'
    }),
    success: function () { alert('success!'); },
    error: function () { alert('error!'); }
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14328466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档