2009-11-16 144 views
-1

我通过传递输出有效JSON作为响应的参数来调用JSP,但$.getJson回调函数仍未被触发。 JSP页面输出

{ "data": [ [ [ 1258185480000,4.39], 
       [ 1258186020000,4.31], 
       [ 1258184940000,4.39], 
       [ 1258183560000,4.39] ] ] } 

URL指向JSP页面

的jQuery代码

<script id="source" language="javascript" type="text/javascript"> 
$(function() { 
    alert("before"); 
    $.getJson(URL,function(json){ 
      alert("hello"); 
      var plot = $.plot($("#placeholder"), json.data, options); 
    }); 

alert("after"); 
}); 

回答

9

功能是$.getJSON,而不是$.getJson

+1

我改的getJSON和尝试,还是回调没有被触发。如何验证firebug中的json?我在Jsonlint中验证过,来自JSP的响应是有效的JSON – 2009-11-16 08:28:40

+0

您的服务器是否发送正确的MIME类型:'application/json'或'application/javascript'? – 2009-11-16 08:34:44

+0

$阿贾克斯({ 类型: “GET”, 网址:网址, 数据类型: “JSON”, 成功:函数(结果){ 警报( “成功!”);} , 错误:函数( XMLHttpRequest,textStatus,errorThrown){ alert(textStatus); alert(errorThrown); } }); 当我使用$ .ajax而不是$ .getJSON时,出现分析错误。我回来从JSP的数据是{ “数据”:[[[1258185480000,4.39], [1258186020000,4.31], [1258184940000,4.39], [1258183560000,4.39]]]} 我已验证JSON在jsonlint – 2009-11-16 09:32:50

1

与同样保证Firebug从服务器获取有效的JSON。

+0

我改变了getJSON并尝试了,仍然没有触发回调。如何验证firebug中的json?我在Jsonlint中验证了来自JSP的响应是有效的JSON – 2009-11-16 08:30:18

+1

在Firebug的Net选项卡中,您将能够看到所有的请求/响应。 – 2009-11-16 09:16:18

+0

$阿贾克斯( { 类型: “GET”,网址:URL, 数据类型: “JSON”, 成功:函数(结果){警报( “成功!”);}, 错误:函数(XMLHttpRequest的, textStatus,errorThrown) {alert(textStatus); alert(errorThrown);} }); 当我使用$ .ajax而不是$ .getJSON时,得到一个解析错误。我从JSP获取的数据是 {“data”:[[[1258185480000,4.39],[1258186020000,4.31],[1258184940000,4.39],[1258183560000,4.39]]]}} 我已验证JSON在jsonlint中是正确的。如何找到解析错误是什么? – 2009-11-16 09:34:53

1

我刚在这花了大约两个小时。我发现另一篇文章讨论了$.getJSON$.get之间的区别,以及它们之间的区别。所以我换出了我的getJSON()get()它工作。

(也想提一提,我也验证了一切被从轨动作记录和日志记录了我从JavaScript的回调函数可以工作。)

+1

我相信$ .getJSON和$ .get之间的不同在于内容类型(JSON vs XML)。 – 2012-01-15 02:05:26

+0

我不确定差异,但$ .get没有返回JSON对象。多谢你们。 – 2017-04-29 05:52:24

0

$ .getJSON也就无法使用没有合适的JSON对象进行回调处理。

+0

jQuery文档的链接将极大地提高您的答案(这里是:http://api.jquery.com/jQuery.getJSON/) – 2012-12-09 19:43:22

+0

真的,谢谢。 – 2012-12-14 02:11:43

+0

这帮了!我正在测试铬64.0.3282.167。我真的被卡住了,因为chrome显示电话已经打完了,并且有所有预期的标题和格式。 然后我看到这个评论,并认为我应该为json找到一个linter。果然,我发现jsonlint.com,它显示[失败](https://jsonlint.com/?json=%7B%27hello%27:%20%27world%27%7D)它花了一段时间才意识到我有单引号。 [JSON规范](http://www.json.org/)指定双引号。有了这个变化$ .getJOSN()按预期工作。 – 2018-03-01 02:53:09

5
$.getJSON(URL, function(data) { 
    alert("hello"); 
}); 

不过是简写的Ajax调用

$.ajax({ 
    dataType: "json", 
    url: URL, 
    data: data, 
    success: function(data) { 
    alert("hello"); 
    } 
}); 

Important: As of jQuery 1.4, if the JSON file contains a syntax error, the request will usually fail silently ... For example, all strings represented in JSON, whether they are properties or values, must be enclosed in double-quotes

来源:jquery.getjson docs