2014-09-18 4 views
2

Я этот скрипт на моем .cshtml страницеНажимные элементы массива после АЯКС постбэка

$(function() { 
     var tempArray = []; 
     var tbValue = $('#tb1').val(); 
     $.ajax({ 
      url: "/ControllerName/getdata", 
      dataType: 'json', 
      data: { strText: tbValue }, 
      success: function (Data) { 
       $.each(Data, function (index, value) { 
        tempArray.push(value.Name); 
       }); 

       $("#tb1").autocomplete({ 
        source: tempArray, 
        minLength: 0 
       }); 
      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       console.log(xhr.status); 
       console.log(xhr.responseText); 
       console.log(thrownError); 
       alert("failure"); 
      } 

     }); 

    }); 

Теперь после вызова AJAX я получить список объектов в Data, как это

enter image description here

я получаю следующие значения index и value в каждом цикле

enter image description here

enter image description here

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

enter image description here

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

Примечание: В журнале консоли отсутствуют ошибки, и я работаю над MVC3.

+1

Что получены * фактические данные *? * Включите соответствующий образец JSON * из сетевого монитора * в текст * в вопросе (а не изображение). Из представленных изображений и значений появляется внешний массив * object *. – user2864740

+0

Кроме того, переместите tempArray * в * обратный вызов успеха, чтобы повысить четкость кода (он не имеет никакой цели снаружи). Назначение или изменение общего объекта почти никогда не является правильным в обработчике AJAX и приводит к множеству неправильных способов использования. – user2864740

+0

@ user2864740: я получаю это значение 'Data: Array [12] 0: Объект Класс: 1 Id: 1 Название: "Амит" Раздел: "A"' , а также пытался принимать 'tempArray' in Success –

ответ

3

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

$.each(Data.Data, function (index, value) { 
    tempArray.push(value.Name); 
}); 

Ваш Ajax возвращает переменный "Data" является объектом

Data = {Data:[array maybe has 12 size]} 
+0

Спасибо, он работает :) –

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