Javascript JSONP问题
我正在编写一些javascript,它使用jQuery进行webservice调用Javascript JSONP问题,javascript,jsonp,Javascript,Jsonp,我正在编写一些javascript,它使用jQuery进行webservice调用 Web服务是我用C语言编写的,所以我可以完全控制它 Web服务正在向数据库写入一些值 web服务与网站不在同一域中 web服务接受一个JSON.stringified参数,该参数包含要提交的所有值 我有几个问题: 如果webservice抛出异常(例如主键约束),这会导致jQuery Ajax异常吗 如果我想返回一个值,比如受影响的行数,我是否必须使用JSONP(因为它是跨域的) 更新:我必须支持IE8,所以
- Web服务是我用C语言编写的,所以我可以完全控制它李>
- Web服务正在向数据库写入一些值
- web服务与网站不在同一域中
- web服务接受一个JSON.stringified参数,该参数包含要提交的所有值
error()
回调,而不是success()
回调。根据您的服务器端框架,您可能能够在那里捕获异常,并且仍然可以传递有关错误的一些有用数据以及http错误代码。但是如果您不处理它,Ajax调用可能会收到一堆无用的HTML,其中包含错误代码。无论您做什么,请确保在发生错误时发送错误代码accesscontrolalloworigin
头。有关更多信息,请参阅public class AllowCrossSiteAttribute : ActionFilterAttribute {
public override void OnActionExecuted(HttpActionExecutedContext actionExecutedContext) {
if (actionExecutedContext.Response != null) {
actionExecutedContext.Response.Headers.Add("Access-Control-Allow-Origin", "*");
base.OnActionExecuted(actionExecutedContext);
}
}
}
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type, Authorization" />
<add name="Access-Control-Allow-Methods" value="GET, POST, PUT, DELETE, OPTIONS" />
</customHeaders>
</httpProtocol>
</system.webServer>
不幸的是,我必须支持IE8,所以CORS还不是我真正的选择。我对更多关于服务器端异常处理的内容感兴趣:如果我编写类似于(在C#System.Web.HttpContext.Current.Response.Status=404)的东西,AJAX请求会接收到这些吗?我不知道C#如何处理http请求,但是如果http响应的状态为404,JQuery会注意到并调用您的错误回调。我必须支持IE8,所以CORS不是一个选项。对不起,我在问题中没有说清楚。但我认为你的第一个答案解决了我的一些问题