ajax jquery调用发布的web引用的webservice

djj929 2013-09-12 09:01:51
写了两个程序A,B,B作为webservice,A添加web引用B,如何ajax,jquery实现对B的接口函数調用,ajax中url怎么设置?望高手帮忙。为这问题困扰我好几天了,真诚希望可以得到有缘人的帮助
...全文
378 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
djj929 2013-09-13
  • 打赏
  • 举报
回复
[System.Web.Script.Services.ScriptService] public class BankService : System.Web.Services.WebService { [WebMethod] // [ScriptMethod] public string HelloWorld() { return "Hello World"; } //根据客户Id,支付密码,支付金额实现支付功能。 [WebMethod] [ScriptMethod(ResponseFormat = ResponseFormat.Json)] public string Pay(string userId,string userPassword,decimal userMoney ) { return new Bank.BLL.users().Pay(userId,userPassword,userMoney);//返回支付结果 } } 楼上的那个注释没用,第1,2,3点也做到了,第4点我是从本机调用,只是跨应用程序,第5点我调试时success函数都没进去,所以不起作用, var json = eval('(' + result.d + ')');我在单个应用程序中是起作用的,能实现webservice调用。方便的话,加我QQ联系:1394921892
jshi123 2013-09-13
  • 打赏
  • 举报
回复
//moneyMount一定不为空,通过session传值 上面这个注释什么意思?两个应用程序之间是不能共享session的。调用WebService要先登录的吗? 检查: webserive服务类是否标记为:[System.Web.Script.Services.ScriptService] Pay方法是否标记为:[ScriptMethod(ResponseFormat = ResponseFormat.Json)] Pay方法的参数是否为(string userId, string userPassword, double userMoney) 返回的结果类型中是否包含 public string payResult 属性。 从本程序和其它程序调用url应该是一样的,都是: http://localhost:3448/BankService.asmx/Pay // 注意只能从本机访问(development server) 前台success函数中: var json = eval('(' + result.d + ')'); //string类型转换为JSON对象 改成: var json = result.d;
djj929 2013-09-13
  • 打赏
  • 举报
回复
function usersubmit() { var userId = $("#userId").val(); //绑定控件的内容 var userPwd = $("#userPwd").val(); var money = $("#moneyMount").val(); if (userId != "" && userPwd != "") //moneyMount一定不为空,通过session传值,否则页面显示不出来 { $.ajax({ async: false, //同步传递 type: "POST", //访问WebService使用Post方式请求 contentType: "application/json;charset=utf-8", //WebService会返回Json类型 url: "http://localhost/BankService.asmx/Pay", //"/Bank/Web/BankService.asmx/Pay", //调用WebService http://localhost:3448/BankService.asmx/Pay data: "{userId:'" + userId + "',userPassword:'" + userPwd + "',userMoney:" + money + "}", //"{userId:'123',userPassword:'123',userMoney:30.0}", // " "{userId:'" + userId + "',userPassword:'" + userPwd + ",'userMoney:" + money + "}", //Email参数 dataType: 'json', // global: false, success: function (result) { //回调函数,result,返回值 var json = eval('(' + result.d + ')'); //string类型转换为JSON对象 // alert(json); var payresult = json.payResult; switch (payresult) { case "Success": alert("支付成功!"); // location.href = "Shopping_Car.aspx"; break; case "NotEnoughMoney": alert("余额不足!请选择货到付款或取消订单"); location.href = "Shopping_Car.aspx"; break; case "UnknowError": alert("未知错误!"); break; case "InvalidAccount": alert("帐号无效或登录帐号密码出错!"); break; default: alert("错误!"); break; } }, error: function () { //location.href = "Shopping_Car.aspx"; alert("失败"); } // Success, //支付成功 NotEnoughMoney,//帐号余额不足 UnknowError,//未知错误 InvalidAccount//帐号无效 }); } else if (userId == "") { alert("用户Id不能为空!"); $("#userId").focus(); } else if (userPwd == "") { alert("用户密码不能为空!"); $("#userPwd").focus(); } } dataType的json换为xml试过了,也没效果。如果不跨应用程序的话,url: "http://localhost:3448/BankService.asmx/Pay", 是成功的,但跨应用程序这段代码就不执行success内函数。好像要要在程序中添加另一个程序的web引用,添加了但不知道url该怎么写。
djj929 2013-09-13
  • 打赏
  • 举报
回复
楼上的朋友,这样比较麻烦,而且我写的是小团队的,不好公开整个项目的内容。
jshi123 2013-09-13
  • 打赏
  • 举报
回复
你做个测试项目打包传到哪个云盘上我看下吧。
djj929 2013-09-13
  • 打赏
  • 举报
回复
楼上的朋友,可否通过QQ上的远程控制给帮我查查问题。我调试了很多次,只知道单步执行到success就跳到error了!
jshi123 2013-09-13
  • 打赏
  • 举报
回复
我这里没有你的测试环境,所以很难猜出是什么问题。 你可以在浏览器中按F12调试下,看ajax发送出去的request和收到的response是否都正常。 webservice也是能调试的,按F5运行,设好断点,收到ajax请求时会停到断点。
devmiao 2013-09-12
  • 打赏
  • 举报
回复
<location path="YourWebservice.asmx"> <system.web> <webServices> <protocols> <add name="HttpGet"/> <add name="HttpPost"/> </protocols> </webServices> </system.web> </location> 参数用 参数名=xxx&参数名=xxx 这种简单的形式post过去就可以了。
全栈极简 2013-09-12
  • 打赏
  • 举报
回复
$.ajax的url参数,给webservice的全地址。
jshi123 2013-09-12
  • 打赏
  • 举报
回复
jquery类似这样: $.ajax({ type: "POST", url: "http://localhost/WebApplication1/WebService1.asmx/HelloWorld", dataType: "xml", success: function (msg) { alert($(msg).text()); }, error: function(e){ alert("failed"); } });
djj929 2013-09-12
  • 打赏
  • 举报
回复
楼上的,这个我看过了,该做的也做了,还是不行,我这个是跨应用程序的,你给的那个应该是在一个程序内,一个程序内的我实现了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧