将字符串从textarea转换为请求标头

时间:2017-01-18 11:11:52

标签: javascript http-headers

我尝试制作一个提交请求的表单,并将结果发布到页面中。我有请求正文,网址和标题的输入。但我的标题有问题。我不知道如何转换字符串:

Content-Type : application/x-www-form-urlencoded

{"Content-Type" : "application/x-www-form-urlencoded"}

动态。在我的textarea中,我可能有3-4个用逗号分隔的听众,所以如何将这些标题转换为这个函数可以接受的结构:

function makePostRequest(url, data, headers, httpVerb, dataType, elementId){
    alert(headers);
    $.ajax({
    url: url,
    type: httpVerb,
    data: data,
    headers: {headers},
    dataType: dataType,
    success: function (data, textStatus, jqXHR) {
      $("#div").val(jqXHR.responseText);
    },
    error: function( jqXHR, textStatus, errorThrown ) { $("#div").val(jqXHR.responseText); }
    });
}

我的textarea元素可能包含以下标题:

header1 : content1, header2 : content2

4 个答案:

答案 0 :(得分:1)

在这里,基本上它是split()和trim()的组合。这是一个例子:

$(function () {
  $('button').on('click', function (e) {
    var headers = {}
    var values = $('#foo').val()
    
    // split the headers by comma
    var parts = values.split(',')
    
    // iterate over each group
    $.each(parts, function () {
      // split by : and trim additional whitespace
      var innerParts = this.split(':').map(function (item) {
        return item.trim()
      })
      
      // add the given results to the headers object
      headers[innerParts[0]] = innerParts[1]
    })
    
    console.log(headers)
  })
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<textarea id="foo" rows="5" cols="50"></textarea>
<br>
<button>click me</button>

答案 1 :(得分:0)

如果我已经理解,在执行$ ajax请求之前,您可以获取标头并自己解析它以创建一个类似您想要的字符串。当您有多个标题时,可以使用正则表达式来拆分标题。

答案 2 :(得分:0)

这不是关于标题,这只是字符串操作: 你需要转

public async Task<IHttpActionResult> PutNewImageUri(int id){ /*...*/}

进入

"header1 : content1, header2 : content2"

通过将第一个字符串与{"header1": "content1", "header2": "content2"} 字符分开然后将所有子字符串与,分开,它应该没问题。

答案 3 :(得分:0)

喜欢这件事对你有用吗? 它基本上希望每个标题都输入一个新行:

function getHeaders() {
  var headers = $('#headers').val();
  var lines = headers.split('\n');
  var headers = {};
  for (var i = 0; i < lines.length; i++) {
    
    var line = lines[i];
    var parts = line.split(':');
    var key = parts[0];
    var value = parts[1];
    if (key && value) {
      headers[key.trim()] = value.trim();
    }
  }
  return headers
}

$('button').click(function(){
  var headersObject = getHeaders();
  console.log(headersObject);
})
#headers {
  height: 200px;
  width: 300px;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<textarea id="headers">
Content-Type : application/x-www-form-urlencoded
Header2 : Value
</textarea>
<button>Get Headers Object</button>

相关问题