2013-04-16 3 views
2

У меня есть следующий код, чтобы вызвать веб-службу json в отдельном файле functions.js.JQuery .ajax не работает как ожидалось

function getMajorGroups(){ 

var element = $(".item-group-button"); 

$.ajax({ 
    type:"GET", 
    url:"localhost:6458/posApplication/getAllMajorGroups", 
    data:"{}", 
    contentType:"application/json; charset=utf-8", 
    dataType:"json", 
    done:successResult(majorGroups), 
    fail:errorResult(error) 
}); 
} 

function successResult(majorGroups){ 
    var mGroups = response.d; 
    $("#item-groups").empty(); 

    $.each(majorGroups ,function(){ 
     var h3 = $('h3').append(majorGroups.code); 
     element.append(h3); 
     $("#item-groups").prepend(element); 
    }); 
} 

function errorResult(error){ 
    alert("error"); 
} 

Когда я запустил веб-страницу, и я использую firebug для отслеживания шагов, которые я вижу, скрипт выполняется. Но он не выполняет код успеха или отказа внутри вызова ajax. Я делаю что-то неправильно здесь?

Ниже приведен пример строки, возвращаемой службой.

{"majorGroups": [{"update": "false", "hasMore": "false", "status": "A", "description": "Beverage", "majorGroupId": "48" , "код": "напитки"}, { "обновление": "ложь", "hasMore": "ложь", "статус": "А", "описание": "прачечная", "majorGroupId": "51" , "код": "Прачечная"}, { "обновление": "ложь", "hasMore": "ложь", "статус": "А", "описание": "сигареты", "majorGroupId": "50" , "код": "сигарета"}, { "обновление": "ложь", "hasMore": "ложь", "статус": "А", "описание": "Продукты питания", "majorGroupId": "47" , "code": "Food"}, {"update": "false", "hasMore": "false", "status": "A", "description": "Health Center", "majorGroupId": "52 »,« код »:« Центр здоровья »}],« сбой »:« ложь »}

+0

какая ошибка он не показывается в консоли .. – Rafee

+0

он не показывает какую-либо ошибку! когда я обновляю страницу, она переходит через функцию ajax, приходит к функции успеха и не выполняет код внутри, затем переходит к методу сбоя и не выполняет его и выходит из скрипта! –

+0

попробуйте отправить фиктивные данные и посмотреть, что произойдет – Rafee

ответ

2

$.ajax не имеет собственности failoure. error должно выглядеть так: error: errorResult

Кроме того, этот запрос выполняется через вкладку «Сеть» в инструментах разработчика Chrome или аналогичном инструменте. Проверьте, что находится в сыром ответе, и убедитесь, что это то, что вы хотели. Если запрос не выполнен, вы увидите способ или, по крайней мере, код ошибки.

Если все нормально так далеко, то убедитесь, что ваше добавление DOM элементов, когда DOM готов так обернуть материал с $(function(){ /* your stuff here */ })

Edit:

Это не так done и fail следует использовать. jQuery ajax call возвращает обещание.

$.ajax({ 
    url : "..." 
    /* omitted */ 
}).done(successCallback).fail(failCallback) 

где successCallback может быть либо имя функции, как ваш определенной функции SucceS или просто анонимная функция, как

.done(function(response){ 
    // do stuff with response 
} 

Я думаю, вы должны внимательно прочитать документацию JQuery.

Кроме того, ваш $.each вызов своего рода сломан - вы пропустили параметр в функции, предоставляемой $.each

+0

Я изменил успех и неудачу, и я потерпел неудачу после прохождения документа JQuery. Теперь я получаю ошибку firebug, говоря, что ответ не определен! –

+0

Вы проверили этот запрос? Опубликуйте обновленный код – Marek

+0

Я добавил код обновления! вы можете помочь мне в проверке запроса?Я добавил строку, которая возвращается из служебного вызова! –

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