需要单交叉域AJAX请求

时间:2015-11-28 09:47:57

标签: ajax cross-domain crossdomain-request.js

尝试在我的电子商务商店中实施发送短信功能。

我使用名为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条消息(请求)而不是一条消息。我只需要一个请求和一个发送短信。有人有什么建议吗?

1 个答案:

答案 0 :(得分:0)

要回答你的评论,这就是你应该做的。

在您的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请求都将发送到您的服务器,然后负责联系您的短信服务提供商并发送消息。

我认为执行6次的问题取决于其他问题,但是如果不查看其余的代码就很难说(你可以尝试在#btn上调试click事件,看看每次点击都会执行多少次在按钮上。