我有一个asp.net mvc应用程序,我需要在这个应用程序中使用ajax,我需要添加一个scriptmanager并添加一个服务引用与Web服务的路径,然后从标记调用Web服务。 我有以下代码,它没有看到Web服务:
<form>
<input id="SubmitBtn" type="button" value="Sumbit" onclick="TestService(); return false;" />
<asp:ScriptManager ID="ScriptManager1" runat="server">
<Services>
<asp:ServiceReference Path="~/MVCService.asmx" />
</Services>
</asp:ScriptManager>
<script type="text/javascript" language="javascript">
function TestService()
{
alert('Welcome');
var ret = MVCService.HelloWorld(OnCheckComplete,OnFailed,OnTimeOut);
}
function OnCheckComplete(arg)
{
alert(arg);
}
function OnFailed(arg)
{
alert(arg);
}
function OnTimeOut(arg)
{
alert(arg);
}
</script>
</form>
它报告错误说:MVCService未定义 那我怎么能解决这个问题呢? 我是否需要在MVC应用程序中进行特定配置才能解决此问题? 我已经将ajax toolkit dll添加到我的应用程序参考中并且问题仍然存在
提前致谢
答案 0 :(得分:2)
如果要切换到jQuery,只需将jQuery解决方案放在那里:
function TestService()
{
alert('Welcome');
$.ajax({
url: "MVCService.asmx/HelloWorld",
data: "{}",
type: "POST",
contentType: "application/json; charset=utf-8",
processData: false,
dataType: "json"
success: function(msg) {
alert(msg.d);
}
});
}
确保你有
using System.Web.Script.Services;
[ScriptService]
public class MVCService : WebService
{
[WebMethod]
[ScriptMethod]
public DateTime HelloWorld()
{
return DateTime.Now;
}
答案 1 :(得分:1)
您是否尝试在MVC.NET页面中添加带有viewsate的控件?
我认为ScriptManager需要采用runat =“server”形式。
答案 2 :(得分:1)
感谢每一位我在以下链接找到问题的解决方案: Ajax with asp.net mvc
以下部分解决了我的问题:
<script type="text/javascript" src="../../Content/MicrosoftAjax.debug.js"></script>
<script type="text/javascript">
function TestService()
{
Sys.Net.WebServiceProxy.invoke("../../Services/MVCService.asmx","HellowWord", false,null, success, fail );
}
</script>
答案 3 :(得分:0)
或者 - 您可以使用常规控制器操作。
如果
“foo / bar”
路由配置为
controller =“foo”,action =“bar”
然后
$.get("foo/bar", data, callback, "html")
使用jQuery会调用它。