[英]Why can't I access my WCF web service with Javascript?
我是AJAX的新手,并且尝试通过以下方式访问WCF Web服务:
$(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));
}
});
});
});
当我填写表格并单击提交按钮时,在Firebug上出现以下错误:
ñ
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服务定义如下:
[WebGet(UriTemplate = "/usuario/new?Data={data}",
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare)]
ResponseObject<Usuarios> NewUsuario(string data);
我究竟做错了什么? 是我发送参数的方式吗? 是我尝试访问Web服务的方式吗? 谢谢你的帮助。
JSON.stringify(data)的用途是将javascript对象转换为json表示形式。
我认为在成功/错误功能中,您需要采取其他方式:
success: function (data) {
alert("Exito " + JSON.parse(data));
},
error: function (data) {
alert("Error " + JSON.parse(data));
}
(使用JSON.parse,JSON.stringify时-确保在项目中包含json2.min.js)
我通常使用以下配置来启用对WCF服务的Ajax调用:
1)首先,我在Web.config中创建一个JSON端点行为并将我的服务与之关联:
<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服务:
[ServiceContract]
public class LoginService
{
[OperationContract]
public void SignIn(string email, string pswd)
{
// Check credentials and create session cookie
}
}
3)最后,如下所示进行jQuery ajax调用:
$.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!'); }
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.