如何将json数据标头发送到api

时间:2019-01-07 09:43:56

标签: javascript json

我正在尝试通过Web应用程序发送短信,我从短信供应商那里购买了批量短信,并尝试提前与他们的api.thanks取得联系

我通过邮递员发布数据,并且可以正常工作(发布方法,标题部分),当我将数据从网页发布到其URL时不起作用,

$(document).ready(function() {
 // Add event listener for opening and closing details
 $('#testbut').on('click', function() {
  var Username = 'xxxxxx';
  var password = 'xxxxx';
  var language = '1';
  var sender = 'RitaFoods';
  var Mobile = '2011xxxxx';
  var message = 'hello from the other side';
  $.ajax({
   url: "https://smsmisr.com/api/webapi/?",
   method: "POST",
   "headers",
   data: {
    Username: Username,
    password: password,
    language: language,
    sender: sender,
    Mobile: Mobile,
    message: message
   },
   dataType: "JSON",
   success: function(data) {
    alert("done");
    alert(JSON.stringify(data));;
   }
  })
 });
});

当我将此数据发送到网站上的另一页时,我没有收到任何问题,并且我使用参数进行响应并发出警报,当我发送到api url时,它没有响应,也许是因为我需要发送在标题部分,但我不知道该怎么做。

3 个答案:

答案 0 :(得分:0)

看看the API documentation

上面写着“张贴在标头中而不是正文中”,但这是对您需要做的描述,这是错误的。

看例子。它们显示数据已编码在URL的查询字符串中。用HTTP术语来说,这意味着它放在起始行而不是标题中。


因此,您需要执行以下操作:

  var url = new URL("https://smsmisr.com/api/webapi/?");
  url.searchParams.append("Username", Username);
  url.searchParams.append("Password", password);
  // etc etc

  $.ajax({
   url: url,
   method: "POST",
   dataType: "JSON",
   success: function(data) {
    alert("done");
    alert(JSON.stringify(data));;
   }
  })

如果您需要与旧版浏览器兼容,请参见this answer


警告您,您很可能会遇到in this question所述的问题。

答案 1 :(得分:-1)

您可以使用beforeSend函数设置标题

$.ajax({
  url: "https://smsmisr.com/api/webapi/?",
  method: "POST",
  data: {
    Username: Username,
    password: password,
    language: language,
    sender: sender,
    Mobile: Mobile,
    message: message
  },
  beforeSend: function(xhr){xhr.setRequestHeader('My-Custom-Header', 'My-Value');},
  dataType: "JSON",
  success: function (data) {
    alert("done");
    alert(JSON.stringify(data));;
  }
});

或通过headers字段

$.ajax({
  url: "https://smsmisr.com/api/webapi/?",
  method: "POST", "headers",
  data: {
    Username: Username,
    password: password,
    language: language,
    sender: sender,
    Mobile: Mobile,
    message: message
  },
  headers: {
    'My-Custom-Header': 'My-Value',
  },
  dataType: "JSON",
  success: function (data) {
    alert("done");
    alert(JSON.stringify(data));;
  }
});

答案 2 :(得分:-2)

尝试添加您的Ajax

  

contentType:“ application / json”

$.ajax({
        type: "POST",
        url: **your URL**,
        data: **your DATA**,
        contentType: "application/json",
});