首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用jquery Post的Dotnetnuke WebService

使用jquery Post的Dotnetnuke WebService
EN

Stack Overflow用户
提问于 2013-01-26 19:54:42
回答 2查看 2.1K关注 0票数 1

我正在开发一个dotnetnuke模块,通过javascript连接到webservice来检索数据有很多问题。

我有下面的javascript:

代码语言:javascript
复制
function Test() {
        $.ajax({
            type: "POST",
            url: 'http://localhost/DNN11/service1.asmx/TestMethod',
            data: "{'data':'" + "abc" + "'}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert("success");
            },
            error: function(e) {
                alert("error");
            }
        });


    }

然后是我的Then服务中的以下WebMethod

代码语言:javascript
复制
[WebMethod]
    public string TestMethod(String data)
    {
        return "Hello World";
    }

然而,当帖子没有被成功调用时,我无法通过我的get服务。它一直给我一个500内部服务器错误页面。

请问会出什么问题呢?有没有其他方法可以让我这样做呢?

谢谢

编辑

这是完整的代码

代码语言:javascript
复制
<script type="text/javascript">
    function Test() {

        $.ajax({
            type: "POST",
            url: '<%=ResolveUrl("~/DesktopModules/ModuleTest/WebService1.asmx/TestMethod")%>',
            data: '{ data: "test" }',
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function(msg) {
                alert("Success: " + msg);
            },
            error: function(msg) {
                alert("Failed: " + msg.status + ": " + msg.statusText);
            }
        });   

    }
</script>

<div>
    <input type="button" value="Load" onclick="Test(); return false;" />
</div>

[System.Web.Script.Services.ScriptService]
    public class WebService1 : System.Web.Services.WebService
    {

        [WebMethod]
        [ScriptMethod()]
        public string TestMethod(string data)
        {
            return "Hello World";
        }
    }

我已经尝试将new服务放在新文件夹的DotNetNuke文件夹中,同时将两者都放在本地项目中。我还将ScriptMethod()标记放在WebService中,以允许脚本调用它。但还是一无所获

EN

回答 2

Stack Overflow用户

发布于 2013-01-27 03:07:34

看起来你的问题是跨域调用。如果您的页面与web服务托管在同一台服务器上,那么您的代码应该没有问题。如果您需要与来自其他域的服务交互,则必须使用jsonp请求。请看这个很好的分步指南,其中包含代码示例here

更新

如果同一个应用程序上的所有内容都尝试使用相关的URL。尝试使用url: '/DesktopModules/ModuleTest/WebService1.asmx/TestMethod'而不是url: '<%=ResolveUrl("~/DesktopModules/ModuleTest/WebService1.asmx/TestMethod")%>'

票数 1
EN

Stack Overflow用户

发布于 2013-01-29 12:57:36

为了从页面发布到DNN‘re服务,您必须在模块的上下文中传递。我有一些针对DNN6的示例代码,请参阅

http://slidepresentation.codeplex.com/SourceControl/changeset/view/69709#1181962

主要是

代码语言:javascript
复制
servicesFramework: $.ServicesFramework(<%=ModuleContext.ModuleId %>)

线路

不过,我还没有使用最新的服务框架WebAPI更改对DNN7进行测试。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14536678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档