我在以下路径上托管/发布了 WCF 服务 -
newslettersubscriptiondev.mercola.com/NewsletterSubscriptionService.svc
想要在Jquery Ajax Call
中调用上面的WCF服务
用 jQuery 编写的代码 -
<script type="text/javascript" src="JS/jquery-2.1.4.js"></script>
<script type="text/javascript" src="JS/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
function cityClickJQuery() {
$.ajax({
type: "POST",
url: "http://newslettersubscriptiondev.mercola.com/NewsletterSubscriptionService.svc/CheckEmailaddressValidateOnly",
data: { EmaillAddress: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="413133202f20376f23282d34332a2033737901262c20282d6f222e2c" rel="noreferrer noopener nofollow">[email protected]</a>', Source: 'ArticleBody' },
processData: false,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
alert('success');
alert(data.d);
},
error: function (jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
alert(jqXHR);
}
});
}
</script>
上面的JS代码中,CheckEmailaddressValidateOnly
是Service中定义的C#方法,需要2个参数。
设计代码-
<body>
<form id="form1" runat="server">
<div>
<asp:Button ID="btn1" runat="server" OnClientClick="cityClickJQuery();" Text="click" />
</div>
</form>
</body>
以上 JS 代码不起作用。
请帮忙。
最佳答案
首先您应该验证是否包含属性
[WebInvoke (ResponseFormat = WebMessageFormat.Json)]
其次你应该使用
data:JSON.stringify({EmaillAddress: '<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="96e6e4f7f8f7e0b8f4fffae3e4fdf7e4a4aed6f1fbf7fffab8f5f9fb" rel="noreferrer noopener nofollow">[email protected]</a>', Source: 'ArticleBody'}),
JSON.stringify 定义于 http://www.json.org/js.html .
再更新一次成功返回数据后,您将看到返回的数据不应使用 data.d.EmailAddress 访问,而是使用 data.EmailAddress 访问反而。 ASMX Web 服务将数据放在属性 d 中,但不是 WCF 服务。
关于javascript - 在 Javascript/Jquery Ajax 调用中使用 WCF 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33824831/