Alb*_*reo 5 asp.net ajax wcf jquery c#-4.0
我知道这个问题似乎已多次发布,但我已经阅读了几乎所有这些问题(互联网上的大部分教程),我仍然无法理解我做错了什么.
我试图在一个网站上实现我们正在开发一个由jQuery脚本使用的WCF Web服务,但是400 Bad Request在做AJAX请求时我一直在想,我开始失去希望.
请注意,我是WCF的新手,我只是通过在线教程形成自己,所以我完全有可能忽略或主要搞砸了.
我尝试但没有帮助的问题:
我阅读的外部资源无济于事:
我还尝试创建一个新的解决方案,只有一个页面和服务,以排除干扰,但我仍然有同样的问题.在这里你可以找到代码:
IService.cs
namespace WebService
{
using System;
using System.ServiceModel;
using System.ServiceModel.Web;
[ServiceContract(Name = "Service", Namespace = "WebService")]
public interface IService
{
[OperationContract]
[WebInvoke(BodyStyle = WebMessageBodyStyle.Wrapped, Method = "POST", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
String Test();
}
}
Run Code Online (Sandbox Code Playgroud)
Service.svc.cs
namespace WebService
{
using System;
public class Service : IService
{
public String Test()
{
return "Hello, world.";
}
}
}
Run Code Online (Sandbox Code Playgroud)
Default.aspx的
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="WebService.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$("#doAjax").click(function (event) {
event.preventDefault();
jQuery.ajax({
contentType: "application/json"
, dataType: "text"
, error: function (jqXHR, textStatus, errorThrown) {
console.group("AJAX error:");
console.debug(jqXHR);
console.debug(textStatus);
console.groupEnd();
}
, processData: false
, success: function (data, textStatus, jqXHR) {
console.group("AJAX success:");
console.debug(data);
console.debug(textStatus);
console.debug(jqXHR);
console.groupEnd();
}
, type: "post"
, url: "/Service.svc/Test"
});
});
});
</script>
<title>WebService</title>
</head>
<body>
<form runat="server">
<h1><%= this.Page.Title %></h1>
<p><input id="doAjax" type="button" value="Run" /></p>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
Web.config文件
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<system.web>
<compilation debug="true" targetFramework="4.0" />
</system.web>
<system.serviceModel>
<bindings />
<client />
<behaviors>
<endpointBehaviors>
<behavior name="Behavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
<services>
<service name="Service">
<endpoint behaviorConfiguration="Behavior" binding="webHttpBinding" contract="WebService.IService" />
</service>
</services>
</system.serviceModel>
</configuration>
Run Code Online (Sandbox Code Playgroud)
嘿!我遇到了同样的问题(......再次),但最终解决了它并使其正常工作。
现在这是我自己的例子,但因为它对我有用,希望它也对你有用......我忘记的关键行是在我的 $ajax 命令中:
contentType: "application/json; charset=utf-8"
Run Code Online (Sandbox Code Playgroud)
祝你好运:) 我在这个问题上花了半天时间。
界面:
[OperationContract]
[WebInvoke(ResponseFormat = WebMessageFormat.Json)]
int CreateMilestone(Milestone Input);
Run Code Online (Sandbox Code Playgroud)
班级:
[DataContract]
public class Milestone
{
[DataMember]
public string Name { get; set; }
[DataMember]
public string Date { get; set; }
[DataMember]
public int Risk { get; set; }
[DataMember]
public int Complexity { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
方法:
public int CreateMilestone(Milestone Input)
{
return 0;
}
Run Code Online (Sandbox Code Playgroud)
jquery:
$("#btnSubmit").click(function () {
if ($.trim($("#txtName").val()) == "") {
$("#dName").effect("highlight", 500);
}
else {
var date = $("#txtDate").datepicker("getDate");
var data = {
Name: $("#txtName").val(),
Date: (date.getMonth() + 1) + "-" + date.getDate() + "-" + date.getFullYear(),
Risk: parseInt($("#sRisk").text()),
Complexity: parseInt($("#sComplexity").text())
};
var jsondata = JSON.stringify(data);
$.ajax({
type: "POST",
async: false,
url: 'Services/ProjectService.svc/CreateMilestone',
contentType: "application/json; charset=utf-8",
data: jsondata,
dataType: "json",
success: function (msg) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
// alert(XMLHttpRequest.status);
// alert(XMLHttpRequest.responseText);
}
});
}
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8798 次 |
| 最近记录: |