2013-09-24 4 views
3

Я читал похожие вопросы с похожими проблемами, но каждый совет, который я прочитал, кажется мне неэффективным. Вот вызов Ajax (я использую Jquery 1.9.1):JQuery ajax-запрос не работает очень тихо

$(document).ajaxError(function() { 
alert("AJAX ERROR"); 
}); 

$.post("/lists/complete", { itemID:id }, function(answer) { 
    alert("SUCCESS"); 
}, "text").fail(function() { 
    alert("ERROR"); 
}).always(function() { 
    alert("DONE"); 
}); 

На стороне сервера запрос получен, как ожидалось. Если я отслеживаю ответ сервера на стороне клиента (используя Firebug), я вижу, что сервер отправляет ответ 200 вместе с правильными данными в теле. Однако предупреждение не срабатывает!

Что я могу сделать, чтобы понять проблему? Я должен добавить, что у меня очень мало опыта работы с JS и с Jquery ...

+0

Выполнение только что введенного вами кода работает: http://jsfiddle.net/ZgKvH/. Что вы делаете после '$ .post'? Я подозреваю, что где-то есть ошибка javascript. –

+0

Вы возвращаете недействительный JSON? – epascarello

+0

@MichaelKunst После «$ .post» я ничего не делаю. И firebug не сообщает об ошибке в js ... – paradigmatic

ответ

3

Я также не являюсь поклонником jquery post. Я предпочитаю использовать $ .ajax. Однако рекомендуется цепочки делать, терпеть неудачу и всегда.

$.ajax({ 
    url: ' yoururl ', 
    type: 'POST', 
// dataType: 'default: Intelligent Guess (Other values: xml, json, script, or html)', 
    data: {param1: 'value1'}, 
}) 
.done(function() { 
    console.log("success"); 
}) 
.fail(function() { 
    console.log("error"); 
}) 
.always(function() { 
    console.log("complete"); 
}); 

http://api.jquery.com/jQuery.ajax/

устаревания Примечание: jqXHR.success(), jqXHR.error(), и jqXHR.complete() Обратные вызовы устаревшим JQuery 1.8. Чтобы подготовить код для их возможного удаления, используйте jqXHR.done(), jqXHR.fail(), и jqXHR.always().

+0

Такая же проблема (как описано в вопросе) – paradigmatic

+0

- это методы console.log при запуске обратных вызовов? Можете ли вы настроить jsfiddle, чтобы показать нам ошибку? Попробуйте вызов ajax в отдельном файле (без какого-либо другого кода) и посмотрите, работает ли он. вам придется попытаться указать свою проблему, потому что в коде нет ничего плохого. –

+0

Что произойдет, если вы посетите «/ lists/complete» через браузер? вы получаете ожидаемый ответ? Используете ли вы архитектуру MVC? –

0

Я никогда v не был фанатом $ .post я предпочитаю использовать полный Ajax вызов:

$.ajax({ 
    type: 'POST', 
    url: '/lists/complete', 
    data: data, 
    success: function(data){ 
    alert("SUCCESS"); 
    }, 
    error: function(xhr, type, exception) { 
    // if ajax fails display error alert 
    alert("ajax error response type "+type); 
    } 
}); 

податливости это выстрелил и дайте мне знать, если предупреждения исчезнут. Если это не сработает, откройте консоль (firebug ...) и перейдите на вкладку сети, очистите ее и отправьте запрос.

Нажмите на запрос и проверьте заголовки и ответ, если они нормальные.

+0

Ощутите то же самое о методе '$ .post'. Использование '$ .ajax', или, фактически, предоставление хорошего объекта в качестве аргумента намного более чистое, и вам не нужно беспокоиться о размещении аргументов. – Mark

+0

Такая же проблема (как описано в вопросе) – paradigmatic

+0

@paradigmatic, что показывает ответ на вкладке сети консоли? –

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