2010-07-08 4 views
2

Я просто изучаю, как использовать ajax/json с jquery, и я ударил кирпичную стену, которую я просто не понимаю.jQuery .getJSON не работает

Вот мой код - очень простой код:

$("#click").click(function() { 
    $.getJSON("http://localhost/jsontest/a.json", function(data) { 
     alert("done"); 
    }); 

    }); 

В принципе, нагрузка a.json и отправить предупреждение на экран изречение сделано.

Вот содержание a.json:

{ "сделано": "37"}

Вот так.

Это не работает, хотя ... предупреждение не отображается.

Любые идеи людей?

+1

http://livehttpheaders.mozdev.org - ваш друг. – Anders

+1

Каков адрес страницы, в которой указан запрос? –

+0

ну, это JSON «get», так что это не должно быть проблемой ... – Pointy

ответ

1

Я пари на это: Вы забыли поставить эту установку код в блоке <script>после ваш элемент «щелчок» или в «готовом» обработчике:

$(function() { 
    $('#click').click(function() { /* ... same stuff as you have ... */ }); 
}); 
1

Есть ошибки, вернулись из firebug?

Я бы начать с изменения:

$.getJSON("http://localhost/jsontest/a.json?callback=?", function(data) { 

к:

$.getJSON("http://localhost/jsontest/a.json", 'callback=?', function(data) { 
+0

В Firefox не было ошибок - я пробовал его с помощью ... a.json? Callback =? - до сих пор не работал. Теперь он работает - предупреждение (data.done) выполнило трюк. Спасибо, ребята :-) – icecreamsoop

+1

Итак, когда вы сказали «предупреждение не отображается», вы имели в виду: «предупреждение происходит, но оно просто содержит слово« сделано »? – Pointy

1

Попробуйте это:

$.getJSON("http://localhost/jsontest/a.json", { }, function(data) { 
    alert(data.done); 
}); 
+3

Это не обязательно. Если jQuery видит, что второй параметр является функцией, он предполагает, что вызов выглядит как вызов в исходном вопросе. – Pointy

+0

+1 - Часть '{},' не нужна, обратный вызов может быть вторым параметром, но 'alert (data.done)' (вместо строки '' done '') является правильным. –

+0

Ну да, но он говорит, что предупреждение не отображается. @ Ник, вы признанный мастер пятнистой «забыл поставить код в« готовом »обработчике проблем! – Pointy

8

У меня была проблема, когда я не форматировал данные в файле, который он извлекает правильно. Если у JSON в файле что-то не так, он терпит неудачу. Хотя вы всегда можете добавить функцию .fail (function), чтобы обнаружить сбой.

я использовал: { varname:"my string" }

Когда я должен был с помощью: { "varname":"mystring" }

По этой причине я думаю, было бы лучше использовать получить для извлечения данных с $ .get(), а затем использовать JSON.parse() на нем. Таким образом, вы знаете, не получилось ли получение или синтаксический анализ.

Смежные вопросы