我查看了您提供的示例代码,问题是您违反了same origin policy restriction
. 您不能执行跨域 AJAX 调用。在您的示例中,服务托管在其上http://localhost:35798
,而 Web 应用程序调用它http://localhost:23590
是不可能的。您必须在同一个 ASP.NET 项目中托管服务和调用应用程序。您似乎已尝试使用 ( $.support.cors = true;
) 在客户端启用 CORS,但您的服务不支持 CORS。
调用页面TestHTML5.htm
(TestHTML5.js
您应该修复您的脚本引用。还有一个问题是以下<script type="text/javascript"/>
无效的行。
所以首先修复你的标记(我已经删除了你在标记中的所有 CSS 噪音,以便专注于重要部分):
<!DOCTYPE html>
<html dir="ltr" lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta charset="utf-8" />
<title>SignUp Form</title>
<script type="text/javascript" src="../Scripts/jquery-1.7.2.min.js"></script>
<script type="text/javascript" src="../Scripts/TestHTML5.js"></script>
</head>
<body>
<button id="Send" onclick="testHTML5OnClick();">
Send Me ID!
</button>
</body>
</html>
然后在你的TestHTML5.js
你也可以清理一下。例如,您的服务正在侦听以下 url 模式json/{id}
并仅接受 GET 动词,而您正在尝试使用不可能的 POST。除此之外,您还尝试使用对 GET 动词没有任何意义的 JSON.stringify 方法。您应该简单地将 id 作为您在服务中定义的 url 部分的一部分发送。
function testHTML5OnClick() {
var id = 5;
var url = "../RestServiceImpl.svc/json/" + id;
var type = 'GET';
callLoginService(url);
}
function callLoginService(url, type) {
$.ajax({
type: type,
url: url,
success: serviceSucceeded,
error: serviceFailed
});
}
function serviceSucceeded(result) {
alert(JSON.stringify(result));
}
function serviceFailed(result) {
alert('Service call failed: ' + result.status + '' + result.statusText);
}