2009-11-10 116 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