обратный вызов getJSON не происходит - PullRequest
0 голосов
/ 10 ноября 2009

Я смотрел подобные запросы здесь, но я не могу применить их к моей проблеме. Я довольно новичок в 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)

Переменная rc, которую я использую для получения результата запроса, имеет следующие значения:

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

Почему функция обратного вызова не срабатывает?

Ответы [ 2 ]

1 голос
/ 10 ноября 2009

Если обработчик щелчка присоединен к элементу привязки, то, возможно, вызов ajax не успевает выполнить перед перенаправлением на другую страницу. Попробуйте добавить return false к обратному вызову клика:

$(".testurl").click(function() {
    // do a json call
    // ...
    return false;
});
0 голосов
/ 10 ноября 2009

Вызов $ .getJSON только назначен переменной, он не вызывается.

...