Jquery 如何在Ajax调用中传递正确的Web服务URL
我有一个asp.net Web服务,其中包含一个我必须通过Ajax jquery调用的方法。现在我已将此Web服务发布并部署到IIS中,并且通过localhost可以访问此Web服务和Web方法 以下是本地主机上WebMethod的URLJquery 如何在Ajax调用中传递正确的Web服务URL,jquery,asp.net,ajax,web-services,Jquery,Asp.net,Ajax,Web Services,我有一个asp.net Web服务,其中包含一个我必须通过Ajax jquery调用的方法。现在我已将此Web服务发布并部署到IIS中,并且通过localhost可以访问此Web服务和Web方法 以下是本地主机上WebMethod的URL http://localhost/app/DateWebService.asmx/GetData 现在,根据我的要求,我需要从jquery Ajax按钮单击调用事件调用此WebMethodGetData。现在,只要我单击按钮,我就可以看到Ajax成功方法中的
http://localhost/app/DateWebService.asmx/GetData
现在,根据我的要求,我需要从jquery Ajax按钮单击调用事件调用此WebMethodGetData
。现在,只要我单击按钮,我就可以看到Ajax成功方法中的警报消息,但看不到响应。。
对于响应,我在控制台中得到以下错误
TypeError: msg is null
$("#output").text(msg.d);
这是我的Ajax调用代码
$("#Button1").click(function () {
var Name = "asdfg";
var Contact = "79749497979";
var Email = "hr@gmail.com";
$.ajax({
type: "POST",
url: "http://localhost/app/DateWebService.asmx/GetData",
data: '{"Name":"' + Name + '","Contact":"' + Contact + '","Email":"' + Email + '"}',
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (msg) {
$("#output").text(msg.d);
}
});
});
请帮我克服这个错误提前谢谢
这是我的WebMethod代码
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string GetData(string Name, string Contact, string Email)
{
return Name + Contact + Email;
}
我找到了解决办法。问题是得到了许可。我在客户端代码中添加了一行..即
crossDomain: true,
并在我的Web服务的Web.config
文件中添加了这两行
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
像这样
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
<defaultDocument>
<files>
<add value="DateWebService.asmx" />
</files>
</defaultDocument>
我已经准备好了。你试过调试成功函数了吗?您应该能够停止执行并准确地看到“msg”是什么。也,我会发布web服务代码,以便查看返回的内容。@macoms01我也发布了WebMethod代码。。请查看..@macoms01是否有相同的建议..@macoms01我还检查了浏览器控制台,并阻止了此错误
2跨源请求:同一源策略不允许在http://localhost/app/DateWebService.asmx/GetData. 这可以通过将资源移动到同一个域或启用CORS来解决。
我不熟悉这个错误,但要澄清的是,您的javascript代码执行ajax调用的成功函数,对吗?然后在尝试显示“msg.d”时出错?很抱歉告诉您,但没有帮助..我正在阻止2跨源请求:同一源策略不允许在http://localhost/app/DateWebService.asmx/GetData. 可以通过将资源移动到同一个域或启用CORS来解决此问题。
对此有任何建议吗?您能否导航到asmx并测试此功能?另外,你是指你的JS文件在你的项目中的位置吗?我也得到了作为答案添加的解决方案。谢谢你的帮助,你可能有一个“错误的解决方案”来解决你的问题。如果您正在本地测试(localhost
),请检查您的调试方式是否包括端口(例如localhost:1234)。请求。这可能不明显,但也包括-re:http://localhost
与http://localhost:1234
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Access-Control-Allow-Origin" value="*" />
<add name="Access-Control-Allow-Headers" value="Content-Type" />
</customHeaders>
</httpProtocol>
<defaultDocument>
<files>
<add value="DateWebService.asmx" />
</files>
</defaultDocument>