проблемы с вложением вызовов jquery ajax

#jquery

#jquery

Вопрос:

Я пытаюсь использовать вложенный вызов ajax, но он не работает. В вызове outer .get я извлекаю данные ISBN из файла php. Это будет использоваться для заполнения HTML-таблицы с именем «booklist». Этот работает нормально. Предполагается, что вызов inner .get проверяет ISBN и, если он возвращает значение valid, добавляет к нему галочку, но эта последняя часть не работает. В этом коде я предполагал, что переменные «index» можно увидеть внутри inner .get . Разве это не так?

     $(document).ready(function()
    {   
        $("input#autofill").click(function()
        {
            $.get("last_year_ISBN.php",
                      function(data)
                      {
                          var elements = $('#booklist .ISBN_number');
                          $.each(data, 
                                function(index, obj)
                                {
                                    $(elements[index]).val(obj[16]);
                                    $.get("validate_isbn.php", 
                                        function(answer) 
                                        {
                                            if (answer == "valid")
                                            {
                                                $(elements[index]).append(" < img src = 'pics/green_checkmark.png' > ");
                                            }
                                        },
                                        "text");
                                })

                      },
                      "json");                                              


        });

        $("input#clearISBNs").click(function()
        {
            var elements=$('#booklist .ISBN_number');
            $.each(elements, 
                  function(index, value)
                  {
                    $(elements[index]).val("");
                  });
        });
    });
  

Комментарии:

1. это должно быть видно … все, что находится во внешней области, должно быть видно в этой функции. Мне интересно, может быть, это пробелы между < ними, и img в этом проблема — вы пробовали настроить эту разметку или вы уверены, что подобная разметка работала в другом месте?

2. Нет, это не имеет значения. И в любом случае, этот код должен был появиться в исходном коде, как только я нажал на кнопку, но этого не произошло…

3. по какой-то причине он не входит в функцию (ответ) (при тестировании в firebug… почему это так?

Ответ №1:

Он не должен создавать diff, но попробуйте создать функцию как переменную вне вызова get…

 function(index, obj){
  var ele = $(elements[index]).val(obj[16]);
  var func = function(answer){
    if (answer == "valid") {
      ele.append('<img src="pics/green_checkmark.png" />');
    }
  };
  $.get("validate_isbn.php", func, "text");
});