【发布时间】:2014-09-11 22:55:17
【问题描述】:
我需要通过 asp.net 应用程序中的页面调用跨域 Web 服务 (.asmx)。用户将输入一个搜索查询,应用程序将在其中发送到 Web 服务,然后页面将使用数据进行更新。
我的问题是我如何在没有回发的情况下做到这一点?因为我只是想检索数据而不是输入或操作它。
我尝试的解决方案:
1. Ajax via jquery -> 问题:不支持CORS。
2. serviceReference(用于客户端服务调用),但这仅适用于本地(域上)服务
3. 最后,我尝试使用 updatepanel,其中文本框中的值用于查询 Web 服务,但这显然会强制部分回发,有没有办法让更新面板使用 get req 代替?如果没有,我怎么会这样做,因为我被卡住了!最后,如果是 ASP MVC 结构,这个解决方案会更容易吗?我在学习。谢谢。
【问题讨论】:
-
相当肯定 .asmx Web 服务只允许 Posts(顺便说一句,这与 .net 中的 Post Back 非常不同)。所以你可以通过 jQuery 做一个帖子。
-
要么让页面进行更新面板发布,要么调用页面方法或服务,然后调用外部服务。跨域服务可以从服务器完成。
-
@PhilipPittle 尝试过,但由于不支持跨域资源共享,我遇到了问题,这非常令人沮丧。
-
@user3311351 - 是的,如果您尝试使用不同域中的服务,javascript 可能会抱怨。解决方案是在本地服务器上创建一个代理来调用其他域。
标签: c# asp.net ajax asp.net-mvc web-services