Послал POST запрос, а он послал меня в ответ.
1.
Женек (27.04.2012 / 22:28)
В общем вот код POST запроса -
function add2cart(page, elem) {
if($(elem).hasClass('in-cart')) {
window.location.href = '/cart.html';
} else {
$.post('/ajax-cart.html', {act:'add', product:page}, function(data){
$('#cart-line').html(data);
$(elem).addClass('in-cart');
}, 'html');
}
}
при нажатии вместо посыла появляется в консоли -
jquery-1.4.4.min.js:141
POST http://***.ru/ajax-cart.html 500 (Internal Server Error)
Пробовал через $.ajax, бредятина какая то... Реально.... По другому не скажешь... То в хроме работает, в опере нет, то наоборот, то ни там ни там.... что за ахтунг? как жить дальше? по адресу
http://***.ru/ajax-cart.html ручками перехожу без проблем
2.
Александр (27.04.2012 / 22:36)
Скорее всего просто сервак вылетает в этот момент, коды 5** - ошибка на сервере.
3.
Женек (27.04.2012 / 22:40)
2.
Муз-ТВ, круглосуточно? нет, это не из за этого
4.
Александр (27.04.2012 / 22:41)
тогда сайт в студию
5.
Женек (27.04.2012 / 22:44)
4.
Муз-ТВ, нет смысла, там черт ногу сломит в скриптах, кусок кода который вызывает ошибку я привел.
Когда убираю параметры, то по идее проходит запрос, но мне то нужно с параметрами
6.
Дмитрий (27.04.2012 / 22:48)
Во-первых, убедись, что все переменные принимаются именно постом. Возможно ты $act принимаешь через джет
Во-вторых, метод $.ajax вполне отличный. Весь мир его юзает, а у тебя не выходит. Угадай, кто виноват?
В-третьих, убедись, что ты правильно передаешь в функцию значения page и elem. Строки должны быть обязательно в одинарных кавычках, числа можно и просто как число. Иначе прийдет
undefined либо
null.
Попробуй так:
function add2cart(page, elem) {
if ($(elem).hasClass('in-cart')) {
window.location.href = '/cart.html';
} else {
$.ajax({
type: 'POST',
url: '/ajax-cart.htm',
cache: false,
data: 'act=add&product='+page,
dataType: 'html',
success: function(content)
{
$('#cart-line').html(content);
$(elem).addClass('in-cart');
}
});
}
}
7.
Женек (27.04.2012 / 22:54)
6.
dima.london,
Вставил вот так
function add2cart(page, elem) {
if ($(elem).hasClass('in-cart')) {
window.location.href = '/cart.html';
} else {
alert(page);
$.ajax({
type: 'POST',
url: '/ajax-cart.html',
cache: false,
data: 'act=add&product='+page,
dataType: 'html',
success: function(content)
{
$('#cart-line').html(content);
$(elem).addClass('in-cart');
},
error: function (data)
{
alert('Error');
}
});
}
}
Отвечает мне Error, алерт page выводит 665
Какая разница как они принимаются, если вылетает 500 ошибка? Если бы я их не принял, просто не прошел бы нужный результат, а здесь именно error в запросе.
Я не спорю что метод ajax отличный, у меня он тоже юзается отлично, а вот в данном скрипте что $.post, что $.ajax дают косяк. Гугл дельного на этот счет ничего не дает.
Добавлено через 01:09 сек.
В консоли все тот же 500
8.
Александр (27.04.2012 / 22:56)
7, а обычная html форма отправленная с теми же данными что возвращает?
9.
Дмитрий (27.04.2012 / 22:57)
Убедись что адрес правильный. Я так понимаю, что адрес /ajax-cart.html сформирован черех мод-реврайт, так может в htaccess создано неверное правило для него?
10.
Женек (27.04.2012 / 22:59)
8.
Муз-ТВ, не проверял кстати... Но я думаю что с формой все прокатит нормально. А так чертовщина какая то творится. На других страница выдает еще лучше... Кроме 500 выдает
XMLHttpRequest cannot load
http://www.***.ru/ajax-cart.html. Origin
http://***.ru is not allowed by Access-Control-Allow-Origin.
Добавлено через 02:07 сек.
9.
dima.london, в теории все отлично, все обрабатывается нормально, ручками пускает, хз даже... завтра конечно посмотрю .htaccess.
11.
Александр (27.04.2012 / 23:03)
10, дык ты на другой домен отправляешь запрос?
напиши в скрипте header('Access-Control-Allow-Origin: *');
12.
Женек (27.04.2012 / 23:04)
11.
Муз-ТВ, на этот же домен все уходит, работа внутри сайта. Писал, не спасло)
13.
Дмитрий (27.04.2012 / 23:05)
Basters (27 Апреля 2012 / 20:59)
XMLHttpRequest cannot load http://www.***.ru/ajax-cart.html. Origin http://***.ru is not allowed by Access-Control-Allow-Origin.
Ну ты же сам видишь ошибку. XMLHttpRequest не удалось загрузить адрес бла-бла-бла. К тому же если сервер одтает 500 - значит полюбому дело в адресе.
14.
Женек (27.04.2012 / 23:06)
Да я сегодня ее со всех сторон изнасиловал. И адрес и htaccess, ладно, пойду посплю, завтра мб на свежий ум чего придет
15.
Александр (27.04.2012 / 23:21)
14, потдомен тоже другой домен, похоже что это из-за "http://www.***.ru/ajax-cart.html. Origin
http://***.ru " www в начале, попробуй написать полный адрес url: '/ajax-cart.html',
16.
Димон (02.05.2012 / 19:08)
1) ajax запросы на другие домены нельзя слать, юзай jsonp
2) второй вариант поставить nginx и проксировать на нужном локэйшине нужный урл
17.
Дмитрий (15.06.2012 / 11:51)
Ну чо там хоть за результаты? Получилось у тебя все-таки? Интересно все-таки.
18.
Женек (16.06.2012 / 03:06)
17.
dima.london, да получилось ) на следующий день со свежей головой все вышло. Там реально была проблема в хтакцессе с редиректами по под доменам
URL:
https://visavi.net/topics/31586