gpt4 book ai didi

javascript - 使用 jsonp 获取 400(错误请求)

转载 作者:行者123 更新时间:2023-11-28 02:08:28 25 4
gpt4 key购买 nike

我有一个 Wcf 服务,我通过 Jquery (AJAX) 从 JavaScript 调用它。

这是部分代码:

IService1.cs:

 [ServiceContract]
public interface IService1
{
[WebInvoke(Method = "*",
BodyStyle = WebMessageBodyStyle.Wrapped,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
[OperationContract]
User GetUser(string userName, string password);
}

Service1.svc.cs:

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class Service1 : IService1
{
public User GetUser(string userName, string password)
{
//DO SOMETHING
}
}

Service1.svc:

<%@ ServiceHost Language="C#" Debug="true" Service="ProjName.Service1" CodeBehind="Service1.svc.cs" %>

Web.config:

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<modules runAllManagedModulesForAllRequests="true" />
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Methods" value="POST, GET, OPTIONS" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
</system.webServer>
<system.web>
<compilation debug="true"/>
<identity impersonate="false" />
</system.web>
<system.serviceModel>
<behaviors>
<endpointBehaviors>
<behavior name="EndpBehavior">
<webHttp />
</behavior>
</endpointBehaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="true" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
<services>
<service behaviorConfiguration="ServiceBehavior" name="ProjName.Service1">
<endpoint address="" behaviorConfiguration="EndpBehavior" binding="webHttpBinding" contract="ProjName.IService1" />
</service>
</services>
<standardEndpoints>
<webHttpEndpoint>
<standardEndpoint name=""/>
</webHttpEndpoint>
</standardEndpoints>
</system.serviceModel>
</configuration>

从我的 JS 页面调用 Wcf 函数:

function CallService() {

jQuery.ajaxSetup({
error: function (x, e) {
if (x.status == 0) {
alert('You are offline!!\n Please Check Your Network.');
} else if (x.status == 404) {
alert('Requested URL not found.');
} else if (x.status == 500) {
alert('Internal Server Error.');
} else if (e == 'parsererror') {
alert('Error.\nParsing JSON Request failed.');
} else if (e == 'timeout') {
alert('Request Time out.');
} else {
alert('Unknow Error.\n' + x.responseText);
}
}
});

var request = { userName: "aaa", password: "123" };
var jsondata = JSON.stringify(request);

$.ajax({
type: "POST", //GET or POST or PUT or DELETE verb
url: "http://localhost:xxxx/Service1.svc/GetUser", // Location of the service
data: jsondata, //Data sent to server
contentType: "application/json; charset=utf-8", // content type sent to server
dataType: "jsonp", //Expected data format from server
async: false,
processdata: true, //True or False
crossDomain: true, //True or False
success: function (result) {
alert('success');
}
});

}

IE 上,我收到错误:错误。解析 JSON 请求失败。

Chorme 上没有出现错误的函数,但在控制台中我收到错误: GET http://localhost...400 (Bad Request) 。

我不明白为什么当我传递POST时它会在GET中通知错误,以及错误请求是什么。

我希望得到一些帮助..

最佳答案

您提供的 Web 配置适用于您使用 wcf 服务的网站?

如果是这样,端点中的“地址”标签不能为空。

如果配置用于 WCF 服务,请在 <service> 中添加 mex 端点标签如

<endpoint address="mex" binding="mexNamedPipeBinding" contract="IMetadataExchange"></endpoint> 

关于javascript - 使用 jsonp 获取 400(错误请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17442685/

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