2010-05-28 4 views
1

Возникла некоторая основная проблема.проблема с jQuery с вызовом getJSON

Мне нужно изменить функцию, которая ранее возвращала код в написанном текстом объекте. Im теперь пытается получить объект с JSON через $ .getJSON

function getEventData() { 
     var result = ''; 

     $.getJSON("ajax.php?cmd=getbydate&fromdate=&todate=", function(data){ 
      result = data; 
     }); 
     return result; 
    } 

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

У вас есть решение для этого?

Редактировать: Хорошо, я получил ответ, который был удален. я просто должен был изменить ABIT ..

Это ответ, который работает:

function getEventData() { 
    var result = ''; 
    url = "ajax.php?cmd=getbydate&fromdate=&todate="; 
     $.ajax({ 
      url: url, 
      async: false, 
      dataType: 'json', 
      success: function(data){ 
        result = data; 
       } 
     }); 
    return result; 
} 
+0

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

ответ

1

должен запрограммировать ваше приложение асинхронным способом, что означает, что вы должны использовать функции обратного вызова для потока приложений или продолжить функцию обратного вызова getJson. Вы можете также сделать запрос синхронно, который должен затем быть в состоянии вернуть значение (или, по крайней мере, присвоить его и блокировать функцию до обратного вызова завершена), но это вовсе не рекомендуется:

function getEventData() { 
     var result = ''; 

     result = $.ajax({ 
      url: "ajax.php?cmd=getbydate&fromdate=&todate=", 
      async: false, 
      dataType: "json", 
      data: data, 
      success: function(data){ 
        return data; 
       } 
     }); 
     return result; 
    } 
+0

Мне пришлось немного изменить его, чтобы заставить его работать, но он это сделал. Несмотря на то, что его не рекомендуется взломать в существующей функции, и мне действительно нужна функция, чтобы вернуть это правильно. –

0

Вы уверены, что сервер возвращает действительный JSON? Будет лучше проверить его с помощью инструмента, такого как jsonlint. Также убедитесь, что в качестве типа содержимого для ответа используется application/json.

+0

Я уверен, что это нормально json. Внутри функции обратного вызова я могу проверить ее с помощью console.log (данные), и это правильно. –

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