我使用协议jsonp来调用web方法。
我将此代码用于webservice:
public class Service1 : System.Web.Services.WebService
{
[WebMethod]
[ScriptMethod]
public string HelloWorld()
{
return "Hello World";
}
}
这是Jquery与客户端的jason:
$.ajax({
type: "POST",
contentType: "application/json; charset=utf-8",
url: 'http://localhost:50837/Service1.asmx/HelloWorld',
data: {},
dataType: "json",
success: function(Msg) {
alert('success:' + Msg.d.FirstName);
},
error: function(xhr, textStatus, errorThrown) {
alert("error");
}
});
}
这个Jquery总是给我一个错误信息,但我不知道原因。 有人可以帮帮我吗?
答案 0 :(得分:2)
您应将Web Service作为网站的一部分。如果您不这样做,由于Same Origin Policy problem(请参阅参考资料),您的代码将无效。
您可以在同一站点上放置许多使用ASP.NET MVC,ASMX Web Service和WCF服务等不同技术开发的应用程序,并且可以很好地协同工作。这是没有更复杂的JSONP的唯一方法。在你的情况下,JSONP超大。
您的问题几乎与Calling simple web service (.asmx file) from AJAX and JQuery using JSON - parse error相同。如果您需要一个有效的Hello Wold示例,您将找到完整代码示例的URL。
您可以在Question about making XHR requests下阅读有关解决同源政策的不同方法的更多信息。阅读完之后,您将了解同源策略问题确实很复杂。您可以解决它,但在您的情况下,您并不需要将所有内容放在同一个网站上并使用相对路径。