0

我正在尝试使用 jquery 在 asp.net 项目中使用 wcf rest api。为此我做了:

  1. 创建 WCF Rest 服务的源代码可以从这里下载。
  2. 创建了一个 ASP.Net 项目以使用 jquery 使用该 restAPI。源代码在这里

在单击按钮的 ASP .Net 项目中,我试图调用 REST 服务。但每次我遇到两个问题:

  1. var jsondata = JSON.stringify(request);在 TestHTML5.js 中调用会引发错误,提示“ Microsoft JScript 运行时错误:'JSON' 未定义

  2. 当我按下忽略时,它会继续向 WCF Rest API 调用,但它总是返回错误(未找到)函数。Rest API 永远不会被调用。

提前感谢大家的帮助。


回答: 解决方案和源链接可以在这个链接上找到。

4

2 回答 2

1

你添加了这个参考吗?

script type="text/javascript" src="../../json.js"></script> 

我有同样的问题和搜索我得到这个和这个结果

于 2013-03-02T07:03:53.377 回答
1

我查看了您提供的示例代码,问题是您违反了same origin policy restriction. 您不能执行跨域 AJAX 调用。在您的示例中,服务托管在其上http://localhost:35798,而 Web 应用程序调用它http://localhost:23590是不可能的。您必须在同一个 ASP.NET 项目中托管服务和调用应用程序。您似乎已尝试使用 ( $.support.cors = true;) 在客户端启用 CORS,但您的服务不支持 CORS。

调用页面TestHTML5.htmTestHTML5.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);
}
于 2013-03-03T08:54:49.393 回答