2017-01-18 6 views
0

リクエストを送信して結果をページに投稿するフォームを作成しようとしました。リクエストボディ、URL、ヘッダーの入力があります。しかし、私はヘッダーに問題があります。文字列をtextareaからリクエストヘッダーに変換する

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

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

:私は、文字列を変換する方法を知りません。私のテキストエリアでは、私は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 

答えて

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>

+0

はい、私はこのようなものが欲しいですが、これを私の要求で使っていれば:ヘッダ:JSON.stringify(ヘッダ)またはヘッダ:ヘッダ、テキストエリアにあるヘッダは無視され、プリフライトリクエストのみが行われます(OPTIONS http動詞付き) –

+0

ヘッダーをストリング化しないでください。オブジェクトは – motanelu

+0

と同じで、それでも同じです。しかし、さらなる研究を進めていくつもりです。あなたが提供した機能は機能しているので、回答を受け入れたものとしてマークします。ありがとう –

0

$ ajaxリクエストを行う前に、ヘッダーを取得して自分で解析して、好きなような文字列を作成することができます。複数のヘッダがある場合、regexを使ってヘッダを分割することができます。

+0

私は擬似コードを書くこともできましたが、私はjavascjriptと経験を持っていない、私はきた理由です –

+0

あなたのvarヘッダーはassoc配列ですか? –

+0

私はそれが何であるべきかわからない...今は値をハードコードしたが、私はjavascriptの種類に関する経験がないので、あなたの質問に答えることはできない。私が必要とするのは、文字列をヘッダに変換してvaruiableなので、要求に合うようにすることです。 –

0

これは本当にヘッダについては、これは単なる文字列操作がありません。 あなたは,文字で最初の文字列を分割し、すべて分割することによって

"header1 : content1, header2 : content2" 

{"header1": "content1", "header2": "content2"} 

に変身する必要があります:の部分文字列は大丈夫です。

+0

私は擬似コードを書くこともできましたが、javascriptでの経験はありませんそれは私が質問した理由です –

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>

関連する問題