有人可以解释以下内容.我已经在网上搜寻了多年,试图找到帮助,我相信我正在做的一切都是正确但仍然会出错.
我的页面上有以下脚本:
function GetPageAdvert2(url) {
$.getJSON('http://url/servicename.asmx/CheckAdvert?callback=?',
{
pagename: url,
success: function(data) { alert(data) }
});
};
我的网络服务只返回:
jsonp1301065851157('url/KiN_150x300.jpg');
问题是当我调用GetPageAdvert2时,什么也没发生.
我的WebService(用VB.Net编写)是:
<WebMethod()> _
<ScriptMethod(ResponseFormat:=ResponseFormat.Json, XmlSerializeString:=False, UseHttpGet:=True)> _
Public Sub CheckAdvert(ByVal pagename As String, ByVal callback As String)
Dim pageUID As Integer = 0
Dim advertURL As List(Of aU) = New List(Of aU)()
Dim sss As String
Using con As New System.Data.sqlClient.sqlConnection(My.Settings.sqlConnection2)
sql STUFF IN HERE
the SELECT statement will return a value and place it in Variable SSS
End Using
Context.Response.ContentType = "application/json"
Context.Response.Write(callback & "('" & sss & "');")
Context.Response.End()
End Function
我回来的反应(在FF中)是:
ParaMS:
callback jsonp1300979718942
contentType application/json; charset=utf-8
pagename default.html
success undefined
RESPONSE:
jsonp1301065851157('url/KiN_150x300.jpg');
我认为,这主要是正确的.
但是,“警报(数据)”除了“未定义”之外不会产生任何其他内容.
解决方法:
使用JSONP时,您不能简单地返回JSON字符串,因为返回的字符串实际上会在新的脚本元素中注入当前页面.您需要返回一个有效的JavaScript语句,该语句调用一个回调处理程序,在该处理程序中解析响应.
parseResponse({"Name": "Cheeso", Id : 1823, "Rank": 7})
请注意,上面的语法无效JSON,在这种情况下不需要,因为您只以文字符号传递JavaScript对象.
而且,正如x10在他的评论中所说,jQuery改变了?在回调查询参数中,你应该调用一个唯一的函数,所以不要只复制粘贴上面的例子,而是用上面提到的参数替换parseResponse.
更新:您应该更改的最后一项是jQuery.getJSON
的参数:语法如下:
06001
因此,您应该将成功函数作为第二个或第三个参数传递,而不是作为对象的一部分(将其与一般的jQuery.ajax()
函数调用进行比较):
$.getJSON("***URL***.asmx/CheckAdvert?callback=?", function(data) { callback(data) });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。