2009-11-10 115 views
0

我看过类似的查询在这里,但我似乎无法将它们应用于我的问题。我对jquery很新,所以我可能会做些愚蠢的事情。 我有一个简单的getJSON测试: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皮棉)

的VAR RC是我用于接收请求的结果具有以下值:

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

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

回答

1

如果点击处理程序连接到一个锚点元素,那么也许ajax调用没有时间执行,然后重定向到一个不同的页面。尝试添加return false的点击回调:

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

锚元素具有#的href,因此它保留在页面上。我只附加到这个元素作为一个真正的基本测试页来尝试这个JSON的东西。 – 2009-11-10 10:44:31

+0

就是这样 - 我添加了返回false,并且触发了回调。多么奇怪 - 我曾经想过一个锚链接可以让呼叫完成。 非常感谢。 – 2009-11-10 10:55:02

0

的$ .getJSON调用只是分配给一个变量,它不会被调用。

+0

我将它分配给一个变量,以查看结果是什么。当我删除作业时,该功能仍然不会触发。 – 2009-11-10 10:43:36