【问题标题】:getJSON callback not happeninggetJSON 回调没有发生
【发布时间】:2009-11-10 10:32:12
【问题描述】:

我在这里查看了类似的查询,但我似乎无法将它们应用于我的问题。我对 jquery 很陌生,所以我可能会做一些愚蠢的事情。 我有一个简单的 getJSON 测试:

 $(document).ready(function() {
  $(".testurl").click(function() {
   // do a json call
   var url="testjson.php";
   var rc=$.getJSON(
    url,
    {parm1: "P1", parm2: "P2", parm3: "P3"},
    function(data){
     alert("callback function inline");
   });
   var x = 1;
  });
 });

调用一个非常简单的脚本:

  header("Content-Type: application/json");
  echo "{\"results\": [";
  $arr = array();
  $arr[] = "{\"fld1\": \"result1\", \"fld2\": \"result2\", \"fld3\": \"result3\"}";
  echo implode(", ", $arr);
  echo "]}";

返回有效 JSON(我检查了 JSON lint)

我用来接收请求结果的 var rc 有以下值:

getResponseText \"{\"results\": [{\"fld1\": \"result1\", \"fld2\": \"result2\", \"fld3\": \"result3\"}]}\"" 
getReadyState 4
getStatus 200

为什么回调函数不触发?

【问题讨论】:

    标签: javascript jquery callback getjson


    【解决方案1】:

    如果单击处理程序附加到锚元素,则可能在重定向到不同页面之前 ajax 调用没有时间执行。尝试在点击回调中添加return false

    $(".testurl").click(function() {
        // do a json call
        // ...
        return false;
    });
    

    【讨论】:

    • 锚元素的href为#,所以它留在页面上。我只是将该元素作为一个非常基本的测试页面附加到该元素上,用于尝试这些 JSON 内容。
    • 就是这样-我添加了return false,并且触发了回调。多么奇怪 - 我原以为锚链接会让通话完成。非常感谢。
    【解决方案2】:

    $.getJSON 调用只是分配给一个变量,它没有被调用。

    【讨论】:

    • 我将它分配给一个变量只是为了查看结果。当我删除分配时,该功能仍然没有触发。
    猜你喜欢
    • 2018-12-09
    • 2011-01-17
    • 1970-01-01
    • 2011-02-12
    • 1970-01-01
    • 2015-12-21
    • 2020-08-15
    • 2012-02-21
    相关资源
    最近更新 更多