Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

GetJSON jquery не уходит запрос на сторонний url

Ден Але Ученик (53), открыт 4 недели назад
Здравствуйте! Подскажите пожалуйста, почему в getJSON jquery запрос не уходит на сторонний url? Может я делаю что то не так?)

Код:

$(document).ready( function() {
$(".w-form").each( function() {
var frm = $(this).find('FORM') ;
frm.find("[type=submit]").click( function() {
$("form").submit(function(e){ e.preventDefault(); });
UIkit.notification({message: 'Ваша заявка отправляется...', pos: 'bottom-center', timeout: 20000});
$('.uk-button-primary').prop("disabled", true);
$.getJSON('МОЙURL', function(json) {
UIkit.notification({message: 'Ваша заявка отправляется...', pos: 'bottom-center', timeout: 20000});
$('.uk-button-primary').prop("disabled", true);
if (json.error) {
UIkit.notification.closeAll();
error = '';
for(i in json.error) {
error += json.error[i]+'\n';
}
if(error!='') {
UIkit.notification({message: error, pos: 'bottom-center', status: 'danger'});
$('.uk-button-primary').prop("disabled", false);
}
}
else if (json.chn) {
UIkit.notification.closeAll();
frm.trigger('reset');
UIkit.notification({message: json.chn, pos: 'bottom-center', status: 'success'});
$('.uk-button-primary').prop("disabled", false);
}
else {
UIkit.notification.closeAll();
UIkit.notification({message: 'Что-то пошло не так...', pos: 'bottom-center', status: 'success'});
$('.uk-button-primary').prop("disabled", false);
}
});
});
});
});
2 ответа
S.H.I. Оракул (73174) 4 недели назад
1. Сервер, на который вы отправляете запрос, должен поддерживать CORS и возвращать соответствующие заголовки.

2. Используйте JSONP вместо обычного AJAX:
 $.ajax({ 
url: 'МОЙURL',
dataType: 'jsonp',
success: function(json) {
// ваш код обработки ответа
}
});

3. В некоторых случаях может помочь явное указание параметра crossDomain:
 $.ajax({ 
url: 'МОЙURL',
dataType: 'json',
crossDomain: true,
success: function(json) {
// ваш код обработки ответа
}
});

Кроме того, обратите внимание на структуру кода:
1) Вы добавляете обработчик submit к форме внутри click-обработчика, что приведет к множественной привязке событий.
2) У вас дублируется уведомление о отправке заявки.
Ден АлеУченик (53) 4 недели назад
$("form").submit(function(e){ e.preventDefault(); }); убрал, а также попробовал Вашим вариантом, но ничего не вышло(((
Дмитрий Глущенко Профи (712) 4 недели назад
jquery не позволяет отправлять прямые запросы на сторонние сервисы из соображения безопастности. можно отлючить cros, но лучше этого неделать ибо по-мимо твоих запросов, недображелатели могут отсылать себе сессии пользователей и авторизироваться без логина и пароля.

решение проще: пусть jquery вызывает бэк скрипт на твоем сервере. А тот уже - пусть делает curl куда ему надо, хоть до луны.
Похожие вопросы