gpt4 book ai didi

jquery - WCF Ajax 调用不适用于 Jquery $.ajax

转载 作者:行者123 更新时间:2023-12-01 00:33:16 27 4
gpt4 key购买 nike

我有以下 jQuery(服务名称已更改):

var url = "http://localhost/services/MyService.svc/addentrant";
var stuff = $("#signup-form").serializeArray();

$.ajax({
type: "POST",
url: url,
contentType: "application/json; charset=utf-8",
data: stuff,
timeout: 10000,
success: function (obj) { alert('yay!'); }
});

以上内容向我的本地 IIS7.5 服务器上的 Sitefinity 中托管的 WCF 服务发出请求。下面是相关的web.config:

<endpointBehaviors>
<behavior name="jsonBehavior">
<webHttp/>
</behavior>
...
<serviceBehaviors>
<behavior name="DefaultBehavior">
<serviceMetadata httpGetEnabled="true"/>
</behavior>
...
<services>
<service behaviorConfiguration="DefaultBehavior" name="Services.MyService" >
<endpoint address="" behaviorConfiguration="jsonBehavior" binding="webHttpBinding" contract="Services.IMyService" bindingConfiguration=""/>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
...

最后是MyService的接口(interface)和实现:

[ServiceContract(Name = "MyService", Namespace = "http://myservice.com/services/2010/")]
public interface IMyService
{
[OperationContract,
WebInvoke(Method = "POST",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.WrappedRequest,
UriTemplate = "addentrant")]
void AddEntrant(string firstName);
}
...
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class MyService : IMyervice
{
...
public void AddEntrant(string firstName)
{
Entrant entrant = new Entrant()
{
FirstName = firstName,
};
context.Entrants.InsertOnSubmit(entrant);
context.SubmitChanges();
}
}

我想这就是全部了。不管怎样,$.ajax 调用返回成功,但 Web 服务方法没有被调用(我设置了断点)。 我打开 Fiddler,发现收到了 405:方法不允许。我以前见过这种情况,但只是当我忘记设置允许 POST 请求的方法时。我很困惑为什么现在要这样做。

此外,奇怪的是,如果我克隆 Fiddler 中捕获的 ajax 请求,我会得到以下内容:

OPTIONS /services/MyService.svc/addentrant HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Origin: http://localhost:6339
Access-Control-Request-Method: POST

只有 header ,没有请求正文。

最佳答案

如果您尝试使用 GET 而不是 POST 会发生什么?

尝试清除缓存或在网址中附加时间戳 - 200 响应代码可能已被浏览器缓存

关于jquery - WCF Ajax 调用不适用于 Jquery $.ajax,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3578614/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com