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