【问题标题】:What is the mistake in this ajax webservice call?这个 ajax webservice 调用中的错误是什么?
【发布时间】:2013-10-03 13:55:22
【问题描述】:

这是我的脚本

$(document).ready(function () {
        $.ajax({
            type: "get",
            url: "http://localhost:63384/ListWebService.asmx/HelloWorld",
            success: function (data) { alert(data) }
        });
    });

我的网络服务包含

[WebMethod]
    public string HelloWorld()
    {
        return "Hello World";
    }

在运行 asmx 时,我得到了正确的输出。当我使用 post 方法时,相同的 url 会产生输出。但脚本什么也没产生,甚至没有空警报框。错误是什么?

【问题讨论】:

  • 您是否收到任何控制台错误?
  • 我没有得到任何东西。
  • 您的页面和您的服务之间的域相同?
  • 是的,当我使用 post 方法时,我正在获取输出,我现在想通过 ajax 获取输出。
  • 参考stackoverflow.com/questions/7262940/… alert(data.d) 呢?

标签: jquery asp.net ajax web-services


【解决方案1】:

将 contentType 添加到您的 ajax 调用中。而且,我记得。你的结果将在 data.d 例如:

dataType: 'json',
contentType: "application/json; charset=utf-8"

更新

尝试使用带有 webmethod 的 aspx 页面。看起来您的 web.config 没有针对 asmx 进行调整。可能是不允许 GET。

这行得通:

<script>
        $(document).ready(function () {
            $.ajax({
                type: "post",
                dataType: 'json',
                contentType: "application/json; charset=utf-8",
                url: "Default.aspx/HelloWorld",
                success: function (data) { alert(data.d); }
            });
        });
    </script>

【讨论】:

  • 添加了内容类型和数据类型。现在,如果我输入数据,警报框将以“null”作为输出。当我输入 data.d 时,警报框不会出现。
  • alert("success"+data.d);--->没有提示框; alert("success"+data)--->"Successnull"在提示框中;alert("success")--->"success"在提示框中;
  • 并确保您的 web.config 处理映射。
  • 试过了,不成功。但即使在 post 方法中,它也没有击中。但我在 post 方法中得到了正确的输出。
  • 当数据类型更改为“文本”时,我收到警告框“未定义”。
【解决方案2】:

你需要知道哪里出了问题
获得 intell 的最佳方法是在您可以调试的 ajax 调用中添加一个错误处理程序。
它应该/可能看起来像这样:

$(document).ready(function () {
        $.ajax({
            type: "get",
            url: "http://localhost:63384/ListWebService.asmx/HelloWorld",
            success: function (data) { alert(data) }
            error: function (request, status, error) {
              alert(request.responseText);
            }
        });
    });

编辑:
我猜你的网络服务没有配置为获取调用,而只是发布。
你可以深入配置文件以启用获取,但也许尝试更改类型参数以先发布以查看是否有效。

【讨论】:

  • 现在也是空白。我什至没有在错误函数中得到警告框。
  • 如果success和error函数都没有被触发,那么你将收到一个javascript错误。也许 jquery 没有加载或者其他什么,但是一个无错误的 jquery 调用将总是返回一个成功或错误回调。
  • Post 方法也不产生任何结果。
  • 但是具有另一个 aspx 页面的 url 的相同脚本会产生正确的输出。只是 web 服务 url 不起作用。
  • 我同意 westie,这种行为是不正常的,所以假设你没有撒谎,你可能会遗漏一些东西。任何其他 url 仍然会导致成功或错误。
【解决方案3】:

试试这个:

url: "Page.aspx/WriteWebMethodName"

【讨论】:

  • 我试过 url: "ListWebService.asmx/HelloWorld" 还是一样的结果。
【解决方案4】:

当您在服务的返回上设置断点时,它会被命中吗?如果不是,那么 url 可能是错误的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2016-02-18
    • 1970-01-01
    • 2015-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多