2

我有一个非常基本的 - 用于测试 - 用 VB 编写的 ASP.net Web 服务(2.0 和 IIS 6.0),在远程服务器上运行

网络服务

 <WebService(Namespace:="CMS_ChecklistSystemWebService")> _
 <WebServiceBinding(ConformsTo:=WsiProfiles.BasicProfile1_1)> _
 <Global.Microsoft.VisualBasic.CompilerServices.DesignerGenerated()> _
 <System.Web.Script.Services.ScriptService()> _
 Public Class CMS_ChecklistSystemWebService
    Inherits System.Web.Services.WebService
    <WebMethod()> _
    Public Function HelloWorld() As String
        Return "Hello World"
    End Function

配置。

我必须将以下几行添加到我的webservice配置中才能webservice在浏览器中运行

<system.web>
    <webServices>
        <protocols>
            <add name="HttpGet"/>
            <add name="HttpPost"/>
        </protocols>
    </webServices>
</system.web>

**网络服务成果** 在此处输入图像描述

我试图使用运行web servicePHP页面调用它AJAX JQUERYXAMPP v3.1

查询

  $.ajax({
        type: "GET",
        url: "http://192.168.25.11/link to web service",
            data: "",
            dataType: "jsonp",
            contentType: "application/jsonp; charset=utf-8",
            success: function(data) {
                console.log(data);
            }
        });

错误

ajax()以下是调用该函数 后我的控制台的样子在此处输入图像描述

仅供参考,如果我单击第二行中的链接,它会将您链接到webservice并像第一张图片一样运行它

注意

如果我在同webservice一个项目中使用相同的 - 域 - 我可以轻松地进行ajax()调用,type='json'并且它可以完美运行而没有错误

问题

  • 我做错了什么?
  • 我是否需要Webservice返回一个JSON对象而不是XML如果是,那么如何
4

2 回答 2

1

我认为问题是,您在 ajax 调用中将内容类型指定为 json。但是,您的 Web 服务正在返回 xml。

因此,您可以在 ajax 调用中将内容类型指定为 xml 并处理 xml(我不确定是否可能),或者您可以配置 Web 服务以返回 json。

请参阅此 SO 问题(如何从 2.0 asmx Web 服务返回 JSON)来配置 Web 服务以返回 json。

于 2013-05-10T13:35:51.180 回答
0

我认为,Rumit 在这里只给出了部分答案。您当然需要将 Web 服务设置为返回 JSON 而不是 XML。

但是,您已经声明您正在设置dataType: "jsonp" 这要求您在方法调用中返回 JSON,方法名称是callback上面第二张图像中键的值。

例如,它看起来像这样*:

jQuery1910366312976758182({data: "Hello World"})

*不完全是,但一步一步,你会明白的......

于 2013-05-10T13:49:40.940 回答