意外的令牌<使用ajax()和jsonp调用asp.net远程webservice .asmx时

时间:2013-05-10 13:17:55

标签: c# ajax vb.net web-services jsonp

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

WEB服务

 <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

CONFIG。

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

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

**网络服务结果** enter image description here

我试图使用运行web service的{​​{1}} PHP AJAXJQUERY页面调用此XAMPP v3.1

JQUERY

  $.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()函数后我的控制台的样子 enter image description here

仅供参考,如果我点击第二行中的链接,它会将您链接到webservice并按照第一张图片中的方式运行

注意

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

问题

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

2 个答案:

答案 0 :(得分:1)

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

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

请参阅此问题(How to return JSON from a 2.0 asmx web service)以配置Web服务以返回json。

答案 1 :(得分:0)

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

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

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

jQuery1910366312976758182({data: "Hello World"})

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