使用 ajax() 和 jsonp 调用 asp.net 远程 Web 服务 .asmx 时出现意外令牌 <
Posted
技术标签:
【中文标题】使用 ajax() 和 jsonp 调用 asp.net 远程 Web 服务 .asmx 时出现意外令牌 <【英文标题】:unexpected token < when calling asp.net remote webservice .asmx using ajax() and jsonp 【发布时间】:2013-05-05 04:40:50 【问题描述】:我有一个非常基本的 - 用于测试 - 用 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>
**网络服务成果**
我试图使用 AJAX
JQUERY
运行 XAMPP v3.1
从 php
页面调用此 web service
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()
函数后我的控制台的样子
仅供参考,如果我单击第二行中的链接,它会将您链接到webservice
并像第一张图片一样运行它
通知
如果我在同一个项目(域)中使用相同的webservice
,我可以轻松地进行ajax()
调用和type='json'
,它可以完美运行而没有错误
问题
我做错了什么? 我是否需要让Webservice
返回一个JSON
对象而不是XML
如果是,那么如何
【问题讨论】:
Web 服务需要返回由适当的 jsonp 回调包围的有效 JSON 然后我发现的只是将我认为,Rumit 在这里只给出了部分答案。您当然需要将 Web 服务设置为返回 JSON 而不是 XML。
但是,您已经声明您正在设置 dataType: "jsonp"
这要求您在方法调用中返回 JSON,方法名称是上面第二张图片中 callback
键的值。
例如,它看起来像这样:
jQuery1910366312976758182(data: "Hello World")
*不完全是,但一步一步来,你会明白的......
【讨论】:
【参考方案2】:我认为问题在于,您在 ajax 调用中将内容类型指定为 json。但是,您的 Web 服务正在返回 xml。
因此,您可以在ajax调用中将内容类型指定为xml并处理xml(我不确定是否可能),或者您可以配置Web服务以返回json。
请参阅此 SO 问题 (How to return JSON from a 2.0 asmx web service) 以配置 Web 服务以返回 json。
【讨论】:
以上是关于使用 ajax() 和 jsonp 调用 asp.net 远程 Web 服务 .asmx 时出现意外令牌 <的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET 跨域请求之jQuery的ajax jsonp的使用解惑 (转载)
使用 JQuery Ajax 和 JSONP 调用 OData 服务
收到错误“JSONP 注入脚本未调用回调。”使用 Angular 2 和服务器 ASP.NET 核心
如何在 JavaScript 中使用 JSONP 请求执行 Ajax 调用? [复制]