2009-11-10 6 views
0

Я посмотрел на подобные запросы здесь, но я не могу применить их к моей проблеме. Я довольно новичок в jquery, поэтому я могу делать что-то немое. У меня есть простой тест getJSON:getJSON callback не происходит

$(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 пуха)

Значение переменной гс, что Я использую для получения результата запроса, имеет следующие значения:

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. –

+0

Это было то, что я добавил return false, и вызвал обратный вызов. Как очень странно - я бы подумал, что ссылка на якорь позволила бы завершить звонок. Большое спасибо. –

0

в $ .getJSON вызов просто присваивается переменной, она не вызывается.

+0

Я назначил его переменной, чтобы посмотреть, какие результаты были. Когда я удаляю назначение, функция все равно не запускается. –