2015-11-28 7 views
1

Пытается внедрить отправку sms-функций в мой магазин электронной коммерции.Single Cross Domain AJAX Требуемый файл

Я использую сервис под названием esteria.lv и они предоставили мне ссылку API, который выглядит следующим образом: http://api1.esteria.lv/send?api-key=api_key&sender=example.com&number=11223344&text=message

Если сообщение отправляется, то он выводит сообщение ID, теперь он выдает номер ошибки 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 сообщений (запросы) вместо того, чтобы просто один. Мне нужен всего один запрос и один отправленный sms. У кого-нибудь есть предложения?

+0

Собираетесь ли вы поместить свой секретный ключ api в свой javascript? Любой может отправлять сообщения, используя ваш ключ api, просто глядя на ваш код ... если только это бесплатный сервис, это действительно плохая идея ... Я думаю, вы должны переосмыслить ваша логика, вы hould сделать запрос ajax на ваш сервер с помощью только числа и сообщения (нет ключа api! это также решает вопрос о перекрестном происхождении), а затем используйте секретный ключ api для отправки текстового сообщения с вашего сервера. – peppeocchi

+0

Я поместил всю ссылку там, чтобы показать, как она выглядит, я не буду класть туда ключ API. Не могли бы вы объяснить, как код должен выглядеть в этом случае: «вы должны сделать запрос ajax на ваш сервер с помощью только числа и сообщения (нет ключа api! Это решает также запрос перекрестного происхождения), а затем использовать секретный ключ api для отправки текстовое сообщение с вашего сервера. " – maarcs

ответ

0

Чтобы ответить на ваш комментарий, вы должны это сделать.

В вашем JavaScript вы должны иметь АЯКС вызов к серверу

// collect sms data 
$.ajax({ 
    url: 'yourserver/handlesms', 
    method: 'post', 
    data: { 
    sender: '[email protected]', 
    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 будет отправлен на ваш сервер, который затем отвечает связаться с поставщиком услуг смс и отправлять сообщения.

Проблема, что это выполненный 6 раз, я думаю, что это зависит от чего-то другого, но трудно сказать, не глядя на остальную часть кода (вы можете попробовать отладить событие click на #btn и посмотреть, сколько раз выполняется каждый раз, когда вы нажимаете кнопку.

+0

Я использую Opencart, и я нашел, почему он отправляет 6 раз, потому что код был тот же 6 раз. (Dohh). Я попытаюсь реализовать это, выглядит намного лучше, чем то, о чем я думал. – maarcs

+0

Кажется, я не вижу приличного ответа. Я редактировал $ endpont следующим образом: $ endpoint = 'http://api1.esteria.lv/send'. $ apiKey + $ data; и добавил curl_setopt ($ ch, CURLOPT_RETURNTRANSFER, true); но все, что я могу получить, это вся страница, полученная как ответ – maarcs

+0

Я предлагаю вам взглянуть на [пример скручивания] (http://codular.com/curl-with-php), я не могу сказать, почему ответ не что вы ожидаете, но если ваш запрос curl правильный, вы должны увидеть правильный ответ. Проверьте также на ошибки php, попробуйте сначала скопировать URL-адрес, чтобы увидеть, работает ли он или нет, а затем попытайтесь динамически построить URL-адрес. – peppeocchi