gpt4 book ai didi

javascript - getJSON 调用的 "missing ; before statement"错误

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:28:31 26 4
gpt4 key购买 nike

有人可以解释以下内容吗?我在网上搜索了很长时间,试图寻求帮助,我相信我做的每件事都是正确的,但仍然会出错。

我的页面上有以下脚本:

        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 字符串,因为返回的字符串实际上会在新的 script 元素中注入(inject)到当前页面。您需要返回调用回调处理程序的有效 JavaScript 语句,在回调处理程序中解析响应。

维基百科页面上有一个示例:

parseResponse({"Name": "Cheeso", Id : 1823, "Rank": 7})

请注意,上述语法不是有效的 JSON,在本例中不需要,因为您仅以文字表示法传递 JavaScript 对象。

此外,正如 x10 在他的评论中所说,jQuery 将 callback 查询参数中的 ? 更改为您应该调用的唯一函数,所以不要只是复制粘贴上面的示例,但将 parseResponse 替换为提到的参数。

更新:您应该更改的最后一件事是 jQuery.getJSON 的参数: 语法如下:

jQuery.getJSON( url, [ data ], [ success(data, textStatus, jqXHR) ] )

因此,您应该将成功函数作为第二个或第三个参数传递,而不是作为对象的一部分(将其与一般的 jQuery.ajax() 函数调用进行比较):

$.getJSON("***URL***.asmx/CheckAdvert?callback=?", function(data) { callback(data) });

关于javascript - getJSON 调用的 "missing ; before statement"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5418081/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com