Требуется AJAX-запрос для одного домена
Попытка реализовать функцию отправки смс в моем интернет-магазине.
Я пользуюсь сервисом esteria.lv, и мне предоставили ссылку API, которая выглядит следующим образом: http://api1.esteria.lv/send?api-key=api_key&sender=example.com&number=11223344&text=message
Если сообщение отправлено, то выводится идентификатор сообщения, теперь выводится ошибка № 3(невозможно подтвердить подлинность).
Чтобы заставить его работать с моим интернет-магазином, я нашел этот ресурс: http://www.ajax-cross-origin.com/examples/cross-origin.htm и сделал этот код:
$(function() {
$( '#btn' ).click(function(){
$.ajax({
crossOrigin: true,
url: 'http://api1.esteria.lv/send?api-key=api_key&sender=example.com&number=11223344&text=message',
success: function(data) {
$( '#test' ).html(data);
}
});
});
});
Это работает, но проблема в том, что он отправляет 6 сообщений (запросов) вместо одного. Мне нужен только 1 запрос и один отправленный смс. У кого-нибудь есть предложения?
1 ответ
Чтобы ответить на ваш комментарий, это то, что вы должны сделать.
В вашем javascript у вас должен быть вызов ajax на ваш сервер
// collect sms data
$.ajax({
url: 'yourserver/handlesms',
method: 'post',
data: {
sender: 'email@mail.com',
number: '1234567',
message: 'Test message'
}
}).then(function (data) {
alert("Message sent!");
});
На вашем сервере у вас должен быть обработчик для отправки смс, что-то вроде (я не знаю, какая у вас платформа, я просто напишу очень простой пример php)
$data = $_POST;
$apiKey = '12345643223213ds';
$endpoint = 'http://api1.esteria.lv/send';
// Create new curl request
$ch = curl_init($endpoint);
// curl settings, add your data, api key etc...
$result = curl_exec($ch);
// Result will contain the response from your api call
// Then you can send a result back to your client (js)
echo json_encode(['status' => 'Message sent!']);
Это всего лишь пример, код сервера зависит от вашей платформы.
В этом случае у вас нет какого-либо перекрестного запроса (все запросы js будут отправлены на ваш сервер, который отвечает за связь с вашим провайдером sms и отправку сообщений.
Проблема, которая выполняется 6 раз, я думаю, зависит от чего-то другого, но трудно сказать, не глядя на остальную часть кода (вы можете попробовать отладить событие click на #btn и посмотреть, сколько раз выполняется каждый раз, когда вы нажимаете кнопку,