我正在尝试使用jquery在asp.net项目中使用wcf rest api。这样做我做了:
在ASP .Net项目中单击按钮我试图调用REST服务。但每次我遇到两个问题:
在TestHTML5.js中调用var jsondata = JSON.stringify(request);
会抛出错误,指出“ Microsoft JScript运行时错误:'JSON'未定义”
当我按下ignore时,它继续向WCF Rest API调用但它总是返回错误(Not Found)函数。 Rest API永远不会被调用。
提前感谢每个人的帮助。
解答: 可在此link上找到解决方案和来源链接。
答案 0 :(得分:1)
答案 1 :(得分:1)
我查看了您提供的示例代码,问题是您违反了same origin policy restriction
。您无法执行跨域AJAX调用。在您的示例中,服务托管在http://localhost:35798
上,而Web应用程序在http://localhost:23590
上调用它是不可能的。您必须在同一个ASP.NET项目中托管服务和调用应用程序。您似乎尝试使用($.support.cors = true;
)在客户端启用CORS,但您的服务不支持CORS。
您的调用页面(TestHTML5.htm
)看到的另一个问题是您已经包含了两次jquery(一旦缩小版本和标准版本一次),并且您已经包含了脚本(TestHTML5.js
) jQuery的。您应该修复脚本引用。另一个问题是以下行<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
你也可以清理一下。例如,您的服务正在侦听以下网址格式json/{id}
并仅接受GET谓词,并且您正在尝试使用不可能的POST。除此之外,您正在尝试使用JSON.stringify方法,该方法对GET动词没有任何意义。您只需将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);
}