2017-11-28 16 views
0

PUTメソッド経由でデータを送信しようとしましたが、Laravel 5.5では宛先コントローラのInput(またはRequest)内にデータが表示されません。ここで純粋なJavascriptからLaravelコントローラへPUTを送信

はJS:

function selectProject(option){ 

     console.log('Update selected'); 

     var data = new Object(); 
     data.project_id = option.value; 
     data.user_id ={{auth()->user()->id}}; 
     console.log(data); 

     var url = "/admin/projects"; 
     var xhr = new XMLHttpRequest(); 

     xhr.open("PUT", url+'/update_selected', true); 
     xhr.setRequestHeader("X-CSRF-TOKEN", "{{ csrf_token() }}"); 
     xhr.onload = function() { 
       var response = xhr.responseText; 
       if (xhr.readyState == 4 && xhr.status == "200") { 
         console.log(response); 
         document.getElementById("app").innerHTML = response; 
       } else { 
         console.log(response); 
         document.getElementById("app").innerHTML = response; 
       } 
     } 
     xhr.send(data); 
    } 

をLaravelコントローラ内部で私は入力を示すにしてみてください:

echo '[Controller]Inputs:'; 
    return Input::all(); 

ここではconsole.logからの出力を:

Update selected 
{…} 
project_id: "4" 
user_id: 1 
__proto__: Object { … } 
[Controller]Inputs:[] 

質問:何i'am間違っていると入力データはどこですか? p.s.私は純粋なjavascript、jQueryまたはanotherを使用することはできません。 JSONに

xhr.setRequestHeader("content-type", "application/json"); 

・包装データ:ヘッダを付加することによって解決

+0

私は* URLエンコードされた名前/値ペアではないに*そのlaravelがあなたのデータを期待していると思いますjavascriptオブジェクトです。 'var data = 'project_id =' + encodeURIComponent(option.value)+"&user_id = "+ encodeURIComponent({{auth() - > user() - > id}})'を実行して送信してください。 – James

+0

まだコントローラにデータがありません... – deSoul

答えて

0

問題

xhr.send(JSON.stringify(data)); 
関連する問題