2015-02-15 4 views
1

Я использую свое первое приложение с использованием Parse.com для хранения базы данных, и я использую Parse JavaScript SDK для использования этой базы данных.jquery html() не задает содержимое div

Я пытаюсь заполнить список элементов из одной из моих таблиц базы данных, и эта таблица содержит поле, которое является указателем на объект другого класса/таблицы. Мне нужно получить поле из этого объекта, чтобы правильно отобразить информацию.

Однако, по-видимому, Parse требует, чтобы я запросил каждый из этих объектов отдельно от моего основного запроса в таблице. Во всяком случае, поэтому я делаю запрос и получаю обратный вызов с успехом, который использует jQuery .html(), чтобы установить содержимое div, idd которого определяется идентификатором возвращаемого объекта.

Проблема заключается в том, что после завершения работы div отображается пустым. Хотя, как ни странно, я пытался использовать вызовы alert, чтобы получить содержимое каждого div в обратном вызове успеха, и содержимое было не только правильным после того, как я позвонил .html(), но также до Я назвал его. Хотя, вероятно, это относится к вызовам асинхронных функций JavaScripts.

Вот функция вопрос:

function updateBudgets() { 
    var Budget = Parse.Object.extend("Budget"); 
    var query = new Parse.Query(Budget); 
    query.equalTo("User", Parse.User.current()); 
    //query.include(["Budget.Category"]); //I tried this to include the category object with the query response, but it didn't seem to work 

    query.find({ 
    success: function(result) { 
     var opt = "<h2>Budgets</h2>"; 
     var category, id; 
     for(var i = 0; i < result.length; i++) { 
     category = result[i].get("Category"); 
     category.fetch({ 
      success: function(cat) { 
      alert($('#' + cat.id).html()); 
      $('#' + cat.id).text(cat.get("Name")); 
      alert($('#' + cat.id).html()); 
      } 
     }); 
     opt += makeBudget(category.id, parseFloat(result[i].get("Amount")/100), result[i].get("Balance"), result[i].id); 
     } 
     $('#budgets').html(opt); 
    } 
    }); 
} 

Я попробовал то, что документация, казалось бы предложить была эквивалентна операции SQL JOIN используя .include() функцию на мой запрос, но это не похоже на работу вообще.

Итак, что бы я хотел знать, так это то, как я могу отлаживать свой JavaScript, чтобы я мог обойти это странное поведение с помощью .html() или как я могу правильно это сделать JOIN стиль работы с Parse. Документация, которую я нашел, на самом деле не содержит подробностей.

Буду очень признателен за любую помощь.

+0

Перед настройкой на html() alert (opt); какое значение вы получаете? –

+2

сначала отлаживает ваши запросы, скорее всего, не имеет никакого отношения к методу 'html()', но больше подходит для использования ответов для создания селекторов. 'alert()' - ужасный инструмент отладки внутри циклов, используйте методы консоли и вместо этого просматривайте данные – charlietfl

ответ

1

Обратите внимание на следующее: «руководство по тестированию» скорее как комментарий, чем ответ, потому что он просто содержит некоторые операторы console.log вместо фактического ответа на вашу проблему.

Во всяком случае ниже некоторые вопросы, которые я хотел бы попробовать к проверке:

  1. вы получаете ответ от сервера следующей query.find
  2. проверки представляют собой данные извлекаются (внутренний запрос) с сервера
  3. проверки если данные категории получены успешно после запроса выборки
  4. проверить, найден ли элемент с идентификатором категории
  5. обработка ошибок добавлена ​​для выборки и запроса

Также я заметил, что вы используете метод .text() для установки значения. Я думаю, что он будет работать нормально, пока этот элемент не является элементом ввода формы. Если это так, вам, вероятно, придется использовать метод .val().

console.log тестовые распечатки, которые я добавил, можно найти здесь Fiddle для функции updateBudgets().(Fiddle updated) Надеюсь, это поможет :-)

+0

@Luke Fiddle. – jyrkim

+0

Спасибо! Используя эти журналы, я смог решить мою проблему. У меня на самом деле была форма с опцией, выбираемой в другом месте на странице, которая использовала идентификаторы категорий в качестве идентификаторов для этих опций. Итак, когда он выбирал элемент по идентификатору, он выбирал неправильный элемент. Я изменил идентификаторы вокруг, чтобы их лучше использовать, чтобы этого больше не повторилось. – Luke

+1

@ Отлично, что вы смогли решить проблему :-) – jyrkim

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