getJSON回调没有发生

时间:2009-11-10 10:32:12

标签: javascript jquery callback getjson

我在这里查看了类似的查询,但我似乎无法将它们应用于我的问题。我对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

为什么回调函数不会触发?

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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