通过AJAX调用在jQuery中使用WCF服务在另一个项目中调用(跨域)
我正在使用我下载的WCF jQuery AJAX调用示例。 我可以运行它并使它在同一个项目中工作。 当我从同一解决方案中的不同项目访问相同的内容时,它什么都不做。 以下是我打电话的方法。
function WCFJSON() { var parameter = "1234567890 (Cross Domain)"; Type = "GET"; Url = "http://localhost:52729/jQueryWebSite/Service.svc/Test?Id=" + parameter; Data = '{"Id": "' + parameter + '"}'; ContentType = "application/json; charset=utf-8"; DataType = "jsonp"; ProcessData = false; CallService(); } $(document).ready(function () { WCFJSON(); });
我有成功和失败方法的警报()。
当我直接在浏览器中运行URL时,它会返回结果。 但是,如果我从一个不同的项目运行它,它什么都不做。 没有警报,没有结果。
以下是我的服务运行项目的Web.Config;
是否与Web.config或脚本中的任何错误有关? 我已经遵循了许多方法并尝试了各种方法。
我找不到任何跨域WCF jQuery AJAX调用的解决方案。 因此,我在这里发帖说明我是如何解决这个问题的。
当我在AJAX Call中使用GET方法时,不需要提供数据。
在jQuery AJAX调用中使用WCF时必须考虑的事项(跨域);
- 在单独的Visual Studio实例中运行WCF服务项目。 不要在一个实例中混合WCF服务项目和消耗项目并立即运行。 运行使用项目时,WCF项目必须已启动并正在运行。
- 使用DataType作为
jsonp
而不是json
。 - 在WCF Project的web.config中,确保
下的\ \ \ \
标记中包含属性crossDomainScriptAccessEnabled="true"
。 绑定名称也设置为
标记中的bindingConfiguration
属性。
有关更多信息,以下是我的jQuery AJAX调用;
$.ajax({ cache: false, type: "GET", async: false, processData: true, data: "", url: "http://localhost:64973/Account.svc/GetAccountByID/2000", contentType: "application/json", dataType: "jsonp", success: function (result) { alert(result); alert(result.GetAccountByIDResult); } });
以下是我的web.config;