不太清楚这里发生了什么。我正在使用Visual Studio 2010 .NET 4.使用以下代码,我使用的是JQuery 1.4.2 - 使用JQuery 1.4.2,代码运行得非常好。我正在调用一个宁静的WCF RESTFUL方法。
我使用以下代码创建了一个简单的客户端:
Type = "POST";
Url = "http://localhost:60922/servicestart/SaveAllClients";
ContentType = "application/json; charset=utf-8";
DataType = "json"; ProcessData = true;
method = "SavePersons";
Data = JSON.stringify(formApplication);
CallService();
function CallService() {
$.ajax({
type: Type, //GET or POST or PUT or DELETE verb
url: Url, // Location of the service
data: Data, //Data sent to server
contentType: ContentType, // content type sent to server
dataType: DataType, //Expected data format from server
processdata: ProcessData, //True or False
success: function(msg) {//On Successfull service call
ServiceSucceeded(msg);
},
error: ServiceFailed// When Service call fails
});
}
现在,在一个单独的项目中的宁静代码:
[WebInvoke(UriTemplate = "SaveAllClients", Method = "POST", ResponseFormat = WebMessageFormat.Json,
RequestFormat = WebMessageFormat.Json)]
[OperationContract]
public string SavePersons(Person peeps)
{
string xml = string.Empty;
XMLToolset x = new XMLToolset();
xml = x.SerializeToXML(peeps);
xml = peeps.SerializeToXML(peeps);
// send xml to Oracle -
string json = string.Empty;
Person p = new Person();
p.first_name = "Good";
p.middle_name = "Happy";
p.last_name = "GH";
json = p.ConvertToJson(p);
return json;
}
现在使用jquery 1.4.2,代码运行得非常好 - 基本上它是一个跨域请求。我决定将jquery 1.4.2换成jquery 1.6.2 - 为了保持最新状态 - 而且好 - 它现在不起作用 - 它报告服务错误O。
我在jquery 1.5.2中研究了ajax文档和新功能,并注意到一些事情,例如将跨域设置为true或使用jsonp,但这些都没有。
在ajax如何运作方面,1.6.2中的其他内容是否发生了变化?
答案 0 :(得分:3)
您的代码无效 NOT ,因为您从jQuery 1.4.2切换到1.6.2但是因为您将WCF服务放在一个单独的项目中。所以我猜你把它托管在一个单独的应用程序中=>你现在违反了same origin policy。这个策略与jQuery无关。这是一个浏览器限制。
因此,如果您想要使其正常运行,您可以配置WCF service to use JSONP。
答案 1 :(得分:0)
可能是您将服务移到了一个单独的项目中导致了这个问题。